본문 바로가기
Reversing/Reversing

혼동되는 어셈블리 명령어

by bbolmin 2012. 10. 7.

 

NEG : 2의 보수 (부호 반전)

NOT : 1의 보수 (비트 반전)

 

MUL : AX와 오퍼랜드 곱셈 -> AX또는 DX:AX에 저장

IMUL <- 부호 o

DIV : AX를 오퍼랜드로 나눔 -> 몫:AL, 나머지:AH

 DX:AX를      ''            -> 몫:AX, 나머지:DX

 

CBW : AL -> AX 확장         ex) eax에 0x12345678가 있으면 -> 0x12340078으로 됨

CWD : AX -> DX:AX 확장

 

 

SHL/SAL : 왼쪽 shift

SHR/SAR : 오른쪽 shift (SAR은 산술 shift로 최상위 비트를 유지한다고 한다.)

ROL/RCL : 회전 왼쪽 shift

ROR/RCR : 회전 오른쪽 shift

 

 

PUSHAD : 레지스터 내용을 스택에 push (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI 순서)

PUSHFD : 플래그 레지스터 내용을 스택에 push

 

REP : 뒤의 스트링 명령을 (E)CX가 0이 될때까지 반복. (E)CX는 1씩 감소.

ex) rep movs byte ptr [edi], byte ptr [esi] <- 문자열 esi값을 edi에 복사

 

SCAS :  크기에 맞게 ax와 비교.

repne scas byte ptr [edi] <- al과 비교하여 같지 않으면 빠져나감

STOS : 크기에 맞게 ax를 edi가 가리키는 주소에 저장
ex) rep stos byte ptr [EDI]

 

LODS : SI내용을 AL에 로드.

 

 

'Reversing > Reversing' 카테고리의 다른 글

함수 호출 규약  (1) 2012.10.16
Windbg 명령어 요약  (0) 2012.10.13
어셈블리어의 주소 지정 방식  (0) 2012.09.10
C코드->어셈코드 분석 [if, for, while]  (0) 2012.07.28
upx 언패킹하기 - MUP(Manual UnPacking)  (4) 2012.07.12