(Part 6)
Arithmetic and Logic Instructions
Most Arithmetic and Logic Instructions affect the processor status
register (or Flags)
As you may see there are 16 bits in this register, each bit is called a
flag and can take a value of 1 or 0.
· Carry Flag (CF) - this flag is set to 1 when there is an unsigned
overflow. For example when you add bytes 255+1 (result is not in
range 0...255). When there is no overflow this flag is set to 0.
· Zero Flag (ZF) - set to 1 when result is zero. For none zero result
this flag is set to 0.
· Sign Flag (SF) - set to 1 when result is negative. When result is
positive it is set to 0. Actually this flag take the value of the most
significant bit.
· Overflow Flag (OF) - set to 1 when there is a signed overflow.
For example, when you add bytes 100 + 50 (result is not in range -
128...127).
· Parity Flag (PF) - this flag is set to 1 when there is even number
of one bits in result, and to 0 when there is odd number of one bits.
Even if result is a word only 8 low bits are analyzed!
· Auxiliary Flag (AF) - set to 1 when there is an unsigned
overflow for low nibble (4 bits).
· Interrupt enable Flag (IF) - when this flag is set to 1 CPU reacts
to interrupts from external devices.
· Direction Flag (DF) - this flag is used by some instructions to
process data chains, when this flag is set to 0 - the processing is
done forward, when this flag is set to 1 the processing is done
backward.