본문 바로가기
Programming/Reversing

IDIV

by NAMP 2009. 4. 12.

 

화면_캡쳐10.png

IDIV 이전까지의  코드를 수행하게 되면,

AL 에 83h 를 넣고, 

CBW 워드로 확장한다.

그리고, CL 에 10h를 넣는다. 

 아래와 같은 레지스터 값을 가지게 된다. 

 

화면_캡쳐11.png 

 

 

그리고 마지막, IDIV CL 을 수행하게 되면 다음과 같이 레지스터 값이 변한다.

미리 예상하기에는,

EAX 00000F3F

EDX 00000009

가 될것 같지만, 다르게 나온다. 

 

화면_캡쳐12.png

 

왜일까. 

나눠지는 값은 2바이트이다. 

그러나, 나누는 값이 1바이트이다. 

그래서, 나눠지는 값이 1바이트로 변한다.

 

83h 를 10진수로 바꾸면, -125이다.

10h 를 10진수로 바꾸면, 16이다. 

 

손수 나눗셈을 해보면, 

     몫 : -7

나머지: -13 이 나온다. 

 

-7을 16진수로 바꾸면,          F9

-13을 16진수로 바꾸면,        F3

 

따라서,, 나머지와 몫을 이어서 쓰면,

0000F3F9

 

화면_캡쳐12.png

 

결과와 똑같다.!!

 

이 글은 스프링노트에서 작성되었습니다.

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

리버싱 기초 정리 1  (0) 2009.06.22
WinDBG  (0) 2009.04.23
ASM 1  (0) 2009.04.09
MASM32 / EditPlus 연동  (0) 2009.04.09
Register  (0) 2009.04.08

댓글