3-12
BASIC EXECUTION ENVIRONMENT
3.6.3.1.STATUS FLAGS
The status flags (bits 0, 2, 4, 6, 7, and 11) of the EFLAGS register indicate the results of arith-
metic instructions, such as the ADD, SUB, MUL, and DIV instructions. The functions of the
status flags are as follows:
CF (bit 0)
Carry flag. Set if an arithmetic operation generates a carry or a
borrow out of the most-significant bit of the result; cleared otherwise.
This flag indicates an overflow condition for unsigned-integer arith-
metic. It is also used in multiple-precision arithmetic.
PF (bit 2)
Parity flag. Set if the least-significant byte of the result contains an
even number of 1 bits; cleared otherwise.
AF (bit 4)
Adjust flag. Set if an arithmetic operation generates a carry or a
borrow out of bit 3 of the result; cleared otherwise. This flag is used
in binary-coded decimal (BCD) arithmetic.
ZF (bit 6)
Zero flag. Set if the result is zero; cleared otherwise.
SF (bit 7)
Sign flag. Set equal to the most-significant bit of the result, which is
the sign bit of a signed integer. (0 indicates a positive value and 1
indicates a negative value.)
OF (bit 11)
Overflow flag. Set if the integer result is too large a positive number
or too small a negative number (excluding the sign-bit) to fit in the
destination operand; cleared otherwise. This flag indicates an over-
flow condition for signed-integer (twos complement) arithmetic.
Of these status flags, only the CF flag can be modified directly, using the STC, CLC, and CMC
instructions. Also the bit instructions (BT, BTS, BTR, and BTC) copy a specified bit into the CF
flag.
The status flags allow a single arithmetic operation to produce results for three different data
types: unsigned integers, signed integers, and BCD integers. If the result of an arithmetic oper-
ation is treated as an unsigned integer, the CF flag indicates an out-of-range condition (carry or
a borrow); if treated as a signed integer (twos complement number), the OF flag indicates a
carry or borrow; and if treated as a BCD digit, the AF flag indicates a carry or borrow. The SF
flag indicates the sign of a signed integer. The ZF flag indicates either a signed- or an unsigned-
integer zero.
When performing multiple-precision arithmetic on integers, the CF flag is used in conjunction
with the add with carry (ADC) and subtract with borrow (SBB) instructions to propagate a carry
or borrow from one computation to the next.
The condition instructions Jcc (jump on condition code cc), SETcc (byte set on condition code
cc), LOOPcc, and CMOVcc (conditional move) use one or more of the status flags as condition
codes and test them for branch, set-byte, or end-loop conditions.