게하! 개하! (게임도 하고 개발도 하고)

어셈블리어 17. 어셈블리어 JG JL, 상태레지스터 SF OF 본문

SISS (2017-2018)/어셈블리어

어셈블리어 17. 어셈블리어 JG JL, 상태레지스터 SF OF

Sorrel 2018. 8. 24. 23:12

이번 강의는 내용은 길지만 저번 시간의

JA JB와 겹치는 부분이 많았다.

 

JG : jump if A greater than B

JL : jump if A less than B

 

JA와 JB랑 비슷하지만 차이가 있다.

비교하는 데이터를 어떤 데이터로 인식하느냐의 차이인데

 

JG와 JL은 부호가 있는 데이터를 비교할 때 사용한다.

 

만약에 1010 vs 0001

 부호가 없는 데이터로 인식하고 비교하면 10vs1 (JA, JB)

부호가 있는 데이터로 인식하고 비교하면 -4vs1 (JG, JL)

이렇게 결과가 완전히 뒤바뀌게 된다.

 

 

 

 

 

eax를 1010으로 해놓고

ebx를 0001로 해놓고

둘을 JA로 비교하면 참이 되어 40100A로 jmp한다.

 

 

하지만 둘을 JG로 비교한다면

-4vs1이 되기 때문에 거짓이 되므로 jmp가 활성화하지 않는다.

 

 

반대로 JL은 참이 되므로 40100A로 jmp한다.

 

 

상태 플래그 중에서

S 플래그 : sign플래그로 이진수 맨 앞의 수와 같다.

OF 플래그 : 계산 과정에서 오버플로우가 일어났는지를 판단한다. 1이면 오버플로우가 일어난 것이고 0이면 일어나지 않은 것이다.

 

0 Comments
댓글쓰기 폼