<<<    Index    >>>
6-27
INSTRUCTION SET SUMMARY
6.4.3.Comparison and Sign Change Instruction
The CMP (compare) instruction computes the difference between two integer operands and
updates the OF, SF, ZF, AF, PF, and CF flags according to the result. The source operands are
not modified, nor is the result saved. The CMP instruction is commonly used in conjunction with
a Jcc (jump) or SETcc (byte set on condition) instruction, with the latter instructions performing
an action based on the result of a CMP instruction.
The NEG (negate) instruction subtracts a signed integer operand from zero. The effect of the
NEG instruction is to change the sign of a two’s complement operand while keeping its
magnitude.
6.4.4.Multiplication and Divide Instructions
The processor provides two multiply instructions, MUL (unsigned multiply) and IMUL signed
multiply), and two divide instructions, DIV (unsigned divide) and IDIV (signed divide).
The MUL instruction multiplies two unsigned integer operands. The result is computed to twice
the size of the source operands (for example, if word operands are being multiplied, the result is
a doubleword).
The IMUL instruction multiplies two signed integer operands. The result is computed to twice
the size of the source operands; however, in some cases the result is truncated to the size of the
source operands (refer to Chapter 3, Instruction Set Reference of the Intel Architecture Software
Developer’s Manual, Volume 2).
The DIV instruction divides one unsigned operand by another unsigned operand and returns a
quotient and a remainder.
The IDIV instruction is identical to the DIV instruction, except that IDIV performs a signed
division.
6.5.DECIMAL ARITHMETIC INSTRUCTIONS
Decimal arithmetic can be performed by combining the binary arithmetic instructions ADD,
SUB, MUL, and DIV (discussed in Section 6.4., “Binary Arithmetic Instructions”) with the
decimal arithmetic instructions. The decimal arithmetic instructions are provided to carry out
the following operations:
•
To adjust the results of a previous binary arithmetic operation to produce a valid BCD
result.
•
To adjust the operands of a subsequent binary arithmetic operation so that the operation
will produce a valid BCD result. 
These instructions operate only on both packed and unpacked BCD values.
<<<    Index    >>>