알맹이방
어셈블리어 17. 어셈블리어 JG JL, 상태레지스터 SF OF 본문
이번 강의는 내용은 길지만 저번 시간의
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이면 일어나지 않은 것이다.
'SISS (2017-2018) > 어셈블리어' 카테고리의 다른 글
어셈블리어 16. JA JB에 N과 E 붙이기 (0) | 2018.08.19 |
---|---|
어셈블리어 15. 조건분기명령어 JNE JA JB 상태 레지스터 CF (0) | 2018.08.13 |
어셈블리어 14. 조건분기명령어 JZ, 상태레지스터 ZF (0) | 2018.08.13 |
어셈블리어 13. 메모리 주소 지정 방식 (0) | 2018.08.06 |
어셈블리어 12. 메모리의 간접참조 (0) | 2018.08.05 |
Comments