Tuuna Computer Science

[Assembly] 어셈블리어 명령어(TEST) 본문

Assembly

[Assembly] 어셈블리어 명령어(TEST)

GuTTe 2018. 4. 24. 18:13

어셈블리어에서 TEST연산은  오퍼랜드 끼리 AND연산하여 결과값을 CMP연산과 같이 저장하진 않는다. 

단지 플래그 값을 세팅하여 분기문에게 영향을 준다 ex) JE, JZ.... 같은 분기문 

여기서 중요한것은 TEST EAX, EAX와 같은 명령어다.   

얼핏보면 같은 레지스터끼리 AND연산하면 EAX값이 나올텐데 왜 하는걸까라는 생각을 할 수 있다. 

하지만 바로 위에 쓰인 TEST명령어는 단지 EAX의 값이 0이냐 아니냐를 판단하기 위해서다 

만약 EAX의 값이 0이라면 AND연산결과 당연히 0이 나올것이고, Z플래그 (ZF가 세팅될 것이다.) 
밑에 JE 0040100 

점프문이 있다면 ZF가 세팅되므로 0040100주소로 점프할 것이다. 



'Assembly' 카테고리의 다른 글

배열 포인터  (0) 2018.06.11
[Assembly]어셈블리어 lea, mov 명령어 차이  (0) 2018.04.28
[Assembly] 포인터 이용하기  (0) 2018.04.23
[Assembly] 어셈블리어 명령어3  (0) 2018.04.23
[Assembly]어셈블리어 명령어2  (0) 2018.04.23
Comments