Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z
Vol. 2B 4-343
INSTRUCTION SET REFERENCE, N-Z
SUB—Subtract
Opcode Instruction
64-Bit
Mode
Compat/
Leg Mode Description
2C ib SUB AL, imm8 Valid Valid Subtract imm8 from AL.
2D iw SUB AX, imm16 Valid Valid Subtract imm16 from AX.
2D id SUB EAX, imm32 Valid Valid Subtract imm32 from EAX.
REX.W + 2D id SUB RAX, imm32 Valid N.E. Subtract imm32 sign-
extended to 64-bits from
RAX.
80 /5 ib SUB r/m8, imm8 Valid Valid Subtract imm8 from r/m8.
REX + 80 /5 ib SUB r/m8*, imm8 Valid N.E. Subtract imm8 from r/m8.
81 /5 iw SUB r/m16,
imm16
Valid Valid Subtract imm16 from
r/m16.
81 /5 id SUB r/m32,
imm32
Valid Valid Subtract imm32 from
r/m32.
REX.W + 81 /5 id SUB r/m64,
imm32
Valid N.E. Subtract imm32 sign-
extended to 64-bits from
r/m64.
83 /5 ib SUB r/m16, imm8 Valid Valid Subtract sign-extended
imm8 from r/m16.
83 /5 ib SUB r/m32, imm8 Valid Valid Subtract sign-extended
imm8 from r/m32.
REX.W + 83 /5 ib SUB r/m64, imm8 Valid N.E. Subtract sign-extended
imm8
from r/m64.
28 /r SUB r/m8, r8 Valid Valid Subtract r8 from r/m8.
REX + 28 /r SUB r/m8*, r8* Valid N.E. Subtract r8 from r/m8.
29 /r SUB r/m16, r16 Valid Valid Subtract r16 from r/m16.
29 /r SUB r/m32, r32 Valid Valid Subtract r32 from r/m32.
REX.W + 29 /r SUB r/m64, r32 Valid N.E. Subtract r64 from r/m64.
2A /r SUB r8, r/m8 Valid Valid Subtract r/m8 from r8.
REX + 2A /r SUB r8*, r/m8* Valid N.E. Subtract r/m8 from r8.
2B /r SUB r16, r/m16 Valid Valid Subtract r/m16 from r16.
2B /r SUB r32, r/m32 Valid Valid Subtract r/m32 from r32.
REX.W + 2B /r SUB r64, r/m64 Valid N.E. Subtract r/m64 from r64.
NOTES:
* In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix
is used: AH, BH, CH, DH.