어셈블리 조건분기

개요

  • 이 문서의 내용은 MASM, TASM의 명령어 기준으로 OP의 순서(부등호조건)를 가정합니다.
  • AT&T 문법에서는 부등호 조건이 (방향만)반대라고 생각하시면 됩니다.

조건분기 명령어 요약표

  • 아래의 표에서 SF와 OF를 비교하는 조건은 부호를 식별한다는 것으로 생각하시면 됩니다.
  • ZF는 상호 뺄셈을 하였을때 0인경우를 1로 봅니다. 즉, 값이 같을때 1이 됩니다.
  • OF(Overflow)와 CF(Carry)의 차이를 혼돈하시는 분이 계실거 같은데 CF는 자리빌림을 하는 경우이고 OF는 계산결과가 Sign bit가 반전될때 발생합니다.

    어셈블리 조건분기
    명령어 부등호 조건 Flag 조건
    JMP 1(True)
    JA > CF=0 & ZF=0
    JNBE > CF=0 & ZF=0
    JAE >= CF=0 | ZF=1
    JNB >= CF=0 | ZF=1
    JB < CF=1
    JNAE < CF=1
    JBE <= CF=1 | ZF=1
    JNA <= CF=1 | ZF=1
    JCXZ CX == 0 .
    JE == ZF=1
    JZ == ZF=1
    JG > ZF=0 & SF == OF
    JNLE > ZF=0 & SF == OF
    JGE >= SF == OF
    JNL >= SF == OF
    JL < SF != OF
    JGNE < SF != OF
    JLE <= ZF == 1 | SF != OF
    JNG <= ZF == 1 | SF != OF
    JNE != ZF == 0
    JNZ != ZF == 0
    JNO No overflow OF == 0
    JNP No parity (홀수) PF == 0
    JPO No parity (홀수) PF == 0
    JNS No sign (양수) SF == 0
    JO Overflow OF == 1
    JP Parity (작수) PF == 1
    JS Sign (음수) SF == 1

참고: SUB의 Carry 동작

SUB를 ADD연산으로 대체하여 표현할경우 Carry의 특성
MOV AL, 4 /* 목적지 피연산자 */
MOV CL, 1 /* 소스 피연산자 */
NEG CL /* 2의 보수 */
ADD AL, CL /* 덧셈 */
CMC /* Carry flag 반전 */



/*
[ FrontPage | PrintView | RawView | RSS ]

Copyright ⓒ MINZKN.COM
All Rights Reserved.

MINZKN
*/