알맹이방
어셈블리어 15. 조건분기명령어 JNE JA JB 상태 레지스터 CF 본문
JNE에 대해서 알아보자. 이전에 배웠던 JE와는 달리 N이 붙어있다.
JNE, JNZ에 있는 N은 not이다.
Jump if Not Zero
Jump if Not equal
eax와 1을 비교해서 같다. 그래서 z가 1이고
jne명령어기 때문에 같으면 실행이 되지 않을 것이고
다르면 실행이 될 것이다.
401005로 넘어가지 않고 바로 다음 명령어로 넘어왔다.
eax와 0을 비교하면 다르기 때문에 jne가 실행이 될 것이다.
실행이 되어서 401005로 넘어갔다
JA와 JB를 알아보자
JA의 a는 above, cmp 비교 명령어에서 앞에 있는 것이 크면 실행하고
JB below, cmp 비교 명령어에서 앞에 있는 것이 작으면 실행한다.
이 명령어는 어떻게 작동하는가? C 상태 레지스터에서 작동한다.
c는 carry의 뜻이며, 올림이라는 뜻이다.
이것은 eax를 보면 32비트인데 32비트 자릿수를 넘어가는 연산이 나오면 carrybite가 1이 된다.
예를 들어 1111+0001이라면 올림 1이 생기기 때문에 carry bite가 1이 되는 것이다.
빼기일 때도 마찬가지로 빌림이 1이 넘어가면 carry가 1이 된다.
eax와 0을 비교해서 eax가 크기 때문에 JA만 계속 반복한다.
eax와 2를 비교해서 eax가 작기 때문에 JB만 계속 반복한다.
'SISS (2017-2018) > 어셈블리어' 카테고리의 다른 글
어셈블리어 17. 어셈블리어 JG JL, 상태레지스터 SF OF (0) | 2018.08.24 |
---|---|
어셈블리어 16. JA JB에 N과 E 붙이기 (0) | 2018.08.19 |
어셈블리어 14. 조건분기명령어 JZ, 상태레지스터 ZF (0) | 2018.08.13 |
어셈블리어 13. 메모리 주소 지정 방식 (0) | 2018.08.06 |
어셈블리어 12. 메모리의 간접참조 (0) | 2018.08.05 |
Comments