Flags register (F)Flags bits indicate whether the last instruction resulted in a Carry (C), Zero value (Z), Negative value (N) or Overflow (V) in the target register. All ALU operations (except "pass-through") affects flags, as well as transfer and increment/decrement instructions. Writing to memory does not affect flags.
When pushed or popped to/from the Stack, the Flags register is treated as a monolithic 12-bit register, but its real implementation is different. For one part, only 8 bits are implemented (the 4 most significant bits always read zero). For the other part, flags need to be set/reset individually.
The register F also holds the current ALU function. This is latched as a result of ALU instructions having the LOCK keyword in assembly language (see section "SubClass 010: ALU" in "Instructions Set Architecture").
The following table shows the F register format:
bit designation descript
--------------------------------------------------------------------
0 f0 ALU function
1 f1 ...
2 f2 ...
3 f3 ...
4 V Overflow flag (result rolled-over to zero)
5 N Negative flag (most significant bit of result is 1)
6 Z Zero flag (all bits in result are zero)
7 C Carry flag (ALU result did not fit in 12 bits)
8 0 (not used)
9 0 (not used)
10 0 (not used)
11 0 (not used)
--------------------------------------------------------------------
|