2014-04-13 3 views
1

이 일련의 명령어가 점프합니까? 내 관심사는 CMP 표현입니다. CMP는 부호없는 숫자 만 처리합니까? 그렇다면 Zero 플래그가 설정되었으므로 점프합니다. 그렇지 않으면 번호가 구체적으로 다르기 때문에 점프하지 않습니다.이 일련의 명령어가 점프합니까?

mov ax, -127d 
    cmp ax, 128d 
    je Target 

답변

4

평등은 기호를 알 수없는 기호입니다.

-127 = FF81 = 65409 
128 = 0080 = 128 

부호없는 및 해석되지 않은 해석에서 부동 한 수가 동일하지 않습니다. 이것은 뺄셈이 부호가있는 것과 부호가없는 것과 같은 과정이라는 것을 직접적으로 알 수 있습니다. 동일한 절차이기 때문에 동일한 입력에 대해 하나의 해석에는 0을, 다른 해석에는 0을 사용할 수 없습니다.

1

cmp은 실제로 부호가있는 산술과 부호없는 산술을 동시에 처리합니다. cmp이 오버플로를 실행 한 후에는 캐리, 부호 및 제로 플래그가 모두 적절히 설정됩니다. 이러한 플래그의 해석은 후속 조건부 명령까지입니다.

예를 들어 jz/jnz은 부호에 영향을받지 않으며 ja/jb은 부호없는 비교를 의미하고 jl/jg은 부호 비교를 의미합니다. 조건 코드에 대한 자세한 내용은 x86 설명서를 참조하십시오.

관련 문제