## 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