About
The status flags (bits 0, 2, 4, 6, 7, and 11) of the EFLAGS register indicate the results of arithmetic instructions.
Articles Related
Usage
One instruction, multiple Data Type Result
The status flags allow a single arithmetic instructions to produce results for three different data types:
- and BCD integers.
If the result of an arithmetic operation is treated as:
- an unsigned integer, the CF flag indicates an out-of-range condition (carry or a borrow);
- a signed integer (two’s complement number), the OF flag indicates a carry or borrow;
- a BCD digit, the AF flag indicates a carry or borrow.
where:
- The SF flag indicates the sign of a signed integers.
- The ZF flag indicates either a signed- or an unsigned integer zero.
Multiple-precision arithmetic on integers
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.
Conditional value
The condition instructions use one or more of the status flags as condition codes and test them for:
- setbyte,
- or end-loop conditions
Management
List
The status flag functions are:
Code | Bit | Name | Description |
---|---|---|---|
CF | 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 arithmetic. It is also used in multiple-precision arithmetic. |
PF | 2 | Parity flag | Set if the least-significant byte of the result contains an even number of 1 bits; cleared otherwise |
AF | 4 | Auxiliary Carry 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 | 6 | Zero flag | Set if the result is zero; cleared otherwise. |
SF | 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 | 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 overflow condition for signed-integer (two’s complement) arithmetic. |
Modification
- Of these status flags, only the CF flag can be modified directly, using the STC, CLC, and CMC instructions.
- The bit instructions (BT, BTS, BTR, and BTC) copy a specified bit into the CF flag.
Documentation / Reference
- 3.4.3.1 - Status Flags