Register - Status Flag

About

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

Usage

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:

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:

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

Documentation / Reference

  • 3.4.3.1 - Status Flags

Powered by ComboStrap