ARCHITECTURE AND INSTRUCTIONS
PF
is
set if the modulo 2 sum
of
the low-
order eight bits of the operation
is
0 (even
parity); otherwise
PF
is
cleared (odd parity).
OF
is
set if the operation results in a carry
into the high-order bit
of
the result but not a
carry out
of
the high-order bit,
or
vice versa;
otherwise
OF
is
cleared.
Addition
Five addition operations are provided:
ADD
performs
an
addition of the two source
operands and returns the result to one
of
the
operands.
ADC
(add with carry) performs
an
addition
of
the two source operands, adds one if the
CF
flag is found previously set, and returns
the result to one
of
the operands.
INC
(increment) performs
an
addition
of
the
source operand and returns the result to the
operand.
AAA (unpacked BCD [ASCII] adjust for
addition) performs a correction of the result
in AL of adding two unpacked decimal ope-
rands, yielding an unpacked decimal sum.
DAA
(decimal adjust for addition) performs
a correction of the result in
AL
of adding two
packed decimal operands, yielding a packed
decimal sum.
Subtraction
Seven subtraction operations are provided:
SUB performs a subtraction
of
the two
source operands and returns the result to one
of
the operands.
SBB (subtract with borrow) performs a sub-
traction of the two source operands, subtracts
pne if the
CF
flag
is
found previously set, and
returns the result to one of the operands.
DEC
(decrement) performs a subtraction of
one from the source operand and returns the
result to the operand.
NEG (negate) performs a subtraction
of
the
source operand from zero and returns the
result to the operand.
2-12
CMP
(compare) performs a subtraction
of
the two source operands causing the flags to
be affected but does not return the result.
AAS (unpacked BCD [ASCII] adjust for
subtraction) performs a correction of the
result in
AL
of subtracting two unpacked
decimal operands, yielding
an
unpacked
decimal difference.
DAS
(decimal adjust for subtraction) per-
forms a correction of the result in
AL
of
subtracting two packed decimal operands,
yielding a packed decimal difference.
Multiplication
Three
multiplication
operations
are
provided:
MUL
performs
an
unsigned multiplication
of
the accumulator (AL or AX) and the source
operand, returning a double length result to
the accumulator and its extension (AL and
AH
for 8-bit operation, AX and
DX
for
16-bit operation).
CF
and
OF
are set if the
top half
of
the result
is
non-zero.
IMUL
(integer multiply)
is
similar
to
MUL
except that it performs a signed multiplica-
tion.
CF
and
OF
are set if the top half
of
the
result
is
not the sign-extension of the low half
of the result.
AAM
(unpacked BCD [ASCII] adjust for
multiply) performs a correction of the result
in AX
of
mUltiplying two unpacked decimal
operands, yielding an unpacked decimal
product.
Division
Three division operations are provided and
two sign-extension operations to support
signed division:
DIV performs
an
unsigned division of the
accumulator and its extension (AL and
AH
for 8-bit operation, AX and DX for 16-bit
operation) by the source operand and returns
the single length quotient to the accumulator
(AL or AX), and returns the single length
remainder to the accumulator extension (AH