| Opcode | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description | | ---------------- | ---------------- | ----- | ----------- | --------------- | --------------------------------------------------- | | 2C ib | SUB AL, imm8 | I | Valid | Valid | Subtract imm8 from AL. | | 2D iw | SUB AX, imm16 | I | Valid | Valid | Subtract imm16 from AX. | | 2D id | SUB EAX, imm32 | I | Valid | Valid | Subtract imm32 from EAX. | | REX.W + 2D id | SUB RAX, imm32 | I | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from RAX. | | 80 /5 ib | SUB r/m8, imm8 | MI | Valid | Valid | Subtract imm8 from r/m8. | | REX + 80 /5 ib | SUB r/m8\*, imm8 | MI | Valid | N.E. | Subtract imm8 from r/m8. | | 81 /5 iw | SUB r/m16, imm16 | MI | Valid | Valid | Subtract imm16 from r/m16. | | 81 /5 id | SUB r/m32, imm32 | MI | Valid | Valid | Subtract imm32 from r/m32. | | REX.W + 81 /5 id | SUB r/m64, imm32 | MI | Valid | N.E. | Subtract imm32 sign-extended to 64-bits from r/m64. | | 83 /5 ib | SUB r/m16, imm8 | MI | Valid | Valid | Subtract sign-extended imm8 from r/m16. | | 83 /5 ib | SUB r/m32, imm8 | MI | Valid | Valid | Subtract sign-extended imm8 from r/m32. | | REX.W + 83 /5 ib | SUB r/m64, imm8 | MI | Valid | N.E. | Subtract sign-extended imm8 from r/m64. | | 28 /r | SUB r/m8, r8 | MR | Valid | Valid | Subtract r8 from r/m8. | | REX + 28 /r | SUB r/m8\*, r8\* | MR | Valid | N.E. | Subtract r8 from r/m8. | | 29 /r | SUB r/m16, r16 | MR | Valid | Valid | Subtract r16 from r/m16. | | 29 /r | SUB r/m32, r32 | MR | Valid | Valid | Subtract r32 from r/m32. | | REX.W + 29 /r | SUB r/m64, r64 | MR | Valid | N.E. | Subtract r64 from r/m64. | | 2A /r | SUB r8, r/m8 | RM | Valid | Valid | Subtract r/m8 from r8. | | REX + 2A /r | SUB r8\*, r/m8\* | RM | Valid | N.E. | Subtract r/m8 from r8. | | 2B /r | SUB r16, r/m16 | RM | Valid | Valid | Subtract r/m16 from r16. | | 2B /r | SUB r32, r/m32 | RM | Valid | Valid | Subtract r/m32 from r32. | | REX.W + 2B /r | SUB r64, r/m64 | RM | Valid | N.E. | Subtract r/m64 from r64. | > \*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.