= 조건분기 명령어 = [[TableOfContents]] == 개요 == * 이 문서의 내용은 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의 특성 ([http://www.minzkn.com:2744/bbs/viewtopic.php?f=2&t=850 SeeAlso]) {{{ MOV AL, 4 /* 목적지 피연산자 */ MOV CL, 1 /* 소스 피연산자 */ NEG CL /* 2의 보수 */ ADD AL, CL /* 덧셈 */ CMC /* Carry flag 반전 */ }}} == 문서를 마치며 == * 제가 알고 있는거 정리한겁니다. 혹시 틀린부분 있으면 인정사정 보지 마시고 고쳐주세요. * x86외의 다른 CPU계열도 누군가 정리해주시면 여러분들에게 도움이 되지 않을까 생각됩니다. * 이 문서의 최근 버젼은 http://www.minzkn.com:2744/ 에서 보실수 있습니다. ---- CategoryDevelopment