Security/Assembly

[어셈블리어] 헷갈리는 것들 ! 정리

LODS, LODSB, LODSW, LODSD(Load String Byte, Word, DWord)

 - ESI가 가르키는 곳에서 지정한 크기(Byte, Word, DWord) 만큼 읽어와 EAX에 복사한다. ESI는 복사한만큼 이동한다.


TEST <Target1>, <Target2> 

- 이 연산은 대부분이 <Target1>과 <Target2>가 같게 설정된다. 예를들면 TEST EAX, EAX. 이 연산은 논리회로의 AND연산을 수행하지만 결과값을 저장하지 않는다. 단지 EAX=0일경우 ZF=1이 되고 EAX!=0일경우 ZF=0이 된다. 그리고 OF, CF는 0이된다.


PUSHAD 

EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP 레지스터의 값을 스택에 PUSH한다.

저장순서는 EAX > ECX > EDX > EBX > ESP > EBP > ESI > EDI

레지스터들의 값을 보관해야 할 때 사용한다.


MOVZX(Move with Zero-Extend)

BYTE나 WORD크기의 피연산자를 WORD나 DWORD크기로 확장하고 남은 비트는 0으로 채운다.

ex. MOVZX reg32, reg16



'Security > Assembly' 카테고리의 다른 글

[어셈블리어] FS Register 를 자세하게 알아봅시다.  (0) 2017.06.04