Register - Status Flag

> Computer System > Computer - Central processing unit (CPU) > Processor - (Execution) Register

1 - About

The status flags (bits 0, 2, 4, 6, 7, and 11) of the EFLAGS register indicate the results of arithmetic instructions.

Advertising

3 - Usage

3.1 - One instruction, multiple Data Type Result

The status flags allow a single arithmetic instructions to produce results for three different data types:

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:

3.2 - 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.

3.3 - Conditional value

The condition instructions use one or more of the status flags as condition codes and test them for:

Advertising

4 - Management

4.1 - 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.
Advertising

4.2 - Modification

5 - Documentation / Reference

  • 3.4.3.1 - Status Flags