<<<    Index    >>>
3-563
INSTRUCTION SET REFERENCE
PSUBB/PSUBW/PSUBD—Packed Subtract
Description
These instructions subtract the individual data elements (bytes, words, or doublewords) of the
source operand (second operand) from the individual data elements of the destination operand
(first operand) (refer to Figure 3-80). If the result of a subtraction exceeds the range for the spec-
ified data type (overflows), the result is wrapped around, meaning that the result is truncated so
that only the lower (least significant) bits of the result are returned (that is, the carry is ignored).
The destination operand must be an MMX™ technology register; the source operand can be
either an MMX™ technology register or a quadword memory location. 
The PSUBB instruction subtracts the bytes of the source operand from the bytes of the destina-
tion operand and stores the results to the destination operand. When an individual result is too
large to be represented in eight bits, the lower eight bits of the result are written to the destination
operand and therefore the result wraps around.
The PSUBW instruction subtracts the words of the source operand from the words of the desti-
nation operand and stores the results to the destination operand. When an individual result is too
large to be represented in 16 bits, the lower 16 bits of the result are written to the destination
operand and therefore the result wraps around.
Opcode
Instruction
Description
0F F8 /r
PSUBB mm, 
mm/m64
Subtract packed bytes in mm/m64 from packed bytes in 
mm.
0F F9 /r
PSUBW mm, 
mm/m64
Subtract packed words inmm/m64 from packed words 
in mm.
0F FA /r
PSUBD mm, 
mm/m64
Subtract packed doublewords in mm/m64 from packed 
doublewords in mm.
Figure 3-80.  Operation of the PSUBW Instruction
PSUBW mm, mm/m64
mm
mm/m64
mm
1000000000000000
0000000000000001
0111111111111111
0111111100111000
1110100011111001
1001011000111111
3006028
–
–
–
–
<<<    Index    >>>