Intel 64 and IA-32 Architectures Software Developers Manual Volume 1, Basic Architecture

7-22 Vol. 1
PROGRAMMING WITH GENERAL-PURPOSE INSTRUCTIONS
7.3.8.2 Conditional Transfer Instructions
The conditional transfer instructions execute jumps or loops that transfer program
control to another instruction in the instruction stream if specified conditions are met.
The conditions for control transfer are specified with a set of condition codes that
define various states of the status flags (CF, ZF, OF, PF, and SF) in the EFLAGS register.
Conditional jump instructions — The Jcc (conditional) jump instructions transfer
program control to a destination instruction if the conditions specified with the condi-
tion code (cc) associated with the instruction are satisfied (see Table 7-4). If the
condition is not satisfied, execution continues with the instruction following the Jcc
instruction. As with the JMP instruction, the transfer is one-way; that is, a return
address is not saved.
Table 7-4. Conditional Jump Instructions
Instruction Mnemonic Condition (Flag States) Description
Unsigned Conditional Jumps
JA/JNBE (CF or ZF) = 0 Above/not below or equal
JAE/JNB CF = 0 Above or equal/not below
JB/JNAE CF = 1 Below/not above or equal
JBE/JNA (CF or ZF) = 1 Below or equal/not above
JC CF = 1 Carry
JE/JZ ZF = 1 Equal/zero
JNC CF = 0 Not carry
JNE/JNZ ZF = 0 Not equal/not zero
JNP/JPO PF = 0 Not parity/parity odd
JP/JPE PF = 1 Parity/parity even
JCXZ CX = 0 Register CX is zero
JECXZ ECX = 0 Register ECX is zero
Signed Conditional Jumps
JG/JNLE ((SF xor OF) or ZF) = 0 Greater/not less or equal
JGE/JNL (SF xor OF) = 0 Greater or equal/not less
JL/JNGE (SF xor OF) = 1 Less/not greater or equal
JLE/JNG ((SF xor OF) or ZF) = 1 Less or equal/not greater
JNO OF = 0 Not overflow
JNS SF = 0 Not sign (non-negative)
JO OF = 1 Overflow
JS SF = 1 Sign (negative)