본문 바로가기
컴퓨터일반

어셈블리어 SHRD, SHLD 연산방법

by 잡다한 처리 2009. 9. 11.
반응형


디버깅을 하다보면 가끔씩 SHRD, SHLD를 볼 수 있다.
바로 Shift Right Double, Shift Left Double 이다.

목적지 피연산자를 지정된 비트 수 많큼 왼쪽 or 오른쪽으로 이동시킨다. 이런뜻으로 생각하면 된다.

1. SHRD(Shift Right Double)
형식 : SHRD Destination, Source, Count
설명 : Shift로 비워진 비트들은 Source의 최하위 비트들로 채워진다.

2. SHLD(Shift Left Double)
형식 : SHRD Destination, Source, Count
설명 : Shift로 비워진 비트들은 Source의 최상위 비트들로 채워진다.

모든지 말로하면 이해가 안된다!!
예제로 알아보자~

1. SHRD 예제
<SHRD EAX, EDX, 18 일때> (빨간 0은 자릿수를 마춰주기 위한 0임)
EAX = 52800000
EDX = 0004497B
EAX Bin = 01010010100000000000000000000000
EDX Bin = 00000000000001000100100101111011 
EAX에서 24(16진수 18)만큼 Shift 한다.
00000000000000000000000001010010 빨간0의 빈자리를 EDX의 최하위에서 가져온다.
00000000000001000100100101111011 에서 <-방향으로 24자리(파란색)를 EAX의 빈공간에 넣는다.
00000100010010010111101101010010 = EAX = 4497B52 이 나온다.


댓글