목록2018/08/13 (2)
GaGe
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..
jmp는 무조건 점프이다. 점프명령은 다 j로 시작한다. 우리가 지금 할 점프 명령어는 뒤에 조건이 붙는다. JZ 주소 = Z가 제로일 때 점프를 하는 것이다. JZ라고 쳐도 JE라고 나오는데 이는 기계어에서는 같은 의미라고 한다. eax등등과 같은 레지스터 아래에 알파벳이 하나인 레지스터가 보이는데 이는 상태레지스터이다. (0과 1로만 이루어져있다.) 이 레지스터의 값에 따라서 점프를 하는가 하지 않는가에 대한 결정이 되는 것이다. z는 zero flag이다. eax가 1일 때는 제로 플래그가 0이다. 제로가 아니기 때문에 거짓인 것이다. 그래서 jz 401005가 실행되지 않는다. 여기서 z가 1이라서 401009로 점프할 수 있을 것이다. 401009로 넘어간 결과를 볼 수 있다! z가 0이라서 j..