Flags

Carry Flag

The rules for turning on the carry flag in binary/integer math are two:

1. The carry flag is set if the addition of two numbers causes a carry out of the most significant (leftmost) bits added.

1111 + 0001 = 0000 (carry flag is turned on)


2. The carry (borrow) flag is also set if the subtraction of two numbers requires a borrow into the most significant (leftmost) bits subtracted.

0000 - 0001 = 1111 (carry flag is turned on)

Otherwise, the carry flag is turned off (zero).


* 0111 + 0001 = 1000 (carry flag is turned off [zero])

* 1000 - 0001 = 0111 (carry flag is turned off [zero])

In unsigned arithmetic, watch the carry flag to detect errors.

In signed arithmetic, the carry flag tells you nothing interesting.


Overflow Flag

The rules for turning on the overflow flag in binary/integer math are two:

1. If the sum of two numbers with the sign bits off yields a result number with the sign bit on, the "overflow" flag is turned on.

0100 + 0100 = 1000 (overflow flag is turned on)


2. If the sum of two numbers with the sign bits on yields a result number with the sign bit off, the "overflow" flag is turned on.

1000 + 1000 = 0000 (overflow flag is turned on

Otherwise, the overflow flag is turned off.


* 0100 + 0001 = 0101 (overflow flag is turned off)

* 0110 + 1001 = 1111 (overflow flag is turned off)

* 1000 + 0001 = 1001 (overflow flag is turned off)

* 1100 + 1100 = 1000 (overflow flag is turned off)


Zero Flag

The zero flag is used to show us whether the value of the indicated operation is zero: a subtraction resulted in a zero, a decriment ended up being zero, or there was zero difference between the two values compared.

For example if a register contains 01 and is DEC then the result would be zero and flag is set


Sign Flag

The sign flag is used to indicate whether the result of the last mathematical operation resulted in a value in which the most significant bit was set.

For example if register contains 01 and is subtracted by 10 the sign flag would be set since the returning number was negative