sub

8086 and later

Subtract

sub r/m8, reg8 | sub r/m16, reg16 | sub r/m32, reg32 | sub r/m64, reg64 | sub reg8, r/m8 | sub reg16, r/m16 | sub reg32, r/m32 | sub reg64, r/m64 | sub r/m16, imm8 | sub r/m32, imm8 | sub r/m64, imm8 | sub al, imm8 | sub ax, imm16 | sub eax, imm32 | sub rax, imm32 | sub r/m8, imm8 | sub r/m16, imm16 | sub r/m32, imm32 | sub r/m64, imm32 | sub [reg8], reg8, r/m8 | sub [reg16], reg16, r/m16 | sub [reg32], reg32, r/m32 | sub [reg64], reg64, r/m64 | sub [reg8], r/m8, reg8 | sub [reg16], r/m16, reg16 | sub [reg32], r/m32, reg32 | sub [reg64], r/m64, reg64 | sub [reg16], r/m16, imm8 | sub [reg32], r/m32, imm8 | sub [reg64], r/m64, imm8 | sub [reg8], r/m8, imm8 | sub [reg16], r/m16, imm16 | sub [reg32], r/m32, imm32 | sub [reg64], r/m64, imm32

SUB performs integer subtraction: it subtracts its second operand from its first, and leaves the result in its destination (first) operand. The flags are set according to the result of the operation: in particular, the carry flag is affected and can be used by a subsequent SBB instruction (SBB).

In the forms with an 8-bit immediate second operand and a longer first operand, the second operand is considered to be signed, and is sign-extended to the length of the first operand. In these cases, the BYTE qualifier is necessary to force NASM to generate this form of the instruction.

Loading...

Forms

Every form of sub the assembler accepts, from NASM's own instruction table. The second column is the processor that introduced the form; a badge marks a form that needs an extension, that is lockable, or that long mode dropped.

FormSinceNotes
sub r/m8, reg88086lock
sub r/m16, reg168086lock
sub r/m32, reg32386lock
sub r/m64, reg64x86-64locklong
sub reg8, r/m88086
sub reg16, r/m168086
sub reg32, r/m32386
sub reg64, r/m64x86-64long
sub r/m16, imm88086lock
sub r/m32, imm8386lock
sub r/m64, imm8x86-64locklong
sub al, imm88086
sub ax, imm168086
sub eax, imm32386
sub rax, imm32x86-64long
sub r/m8, imm88086lock
sub r/m16, imm168086lock
sub r/m32, imm32386lock
sub r/m64, imm32x86-64locklong
sub [reg8], reg8, r/m8x86-64apxlong
sub [reg16], reg16, r/m16x86-64apxlong
sub [reg32], reg32, r/m32x86-64apxlong
sub [reg64], reg64, r/m64x86-64apxlong
sub [reg8], r/m8, reg8x86-64apxlong
sub [reg16], r/m16, reg16x86-64apxlong
sub [reg32], r/m32, reg32x86-64apxlong
sub [reg64], r/m64, reg64x86-64apxlong
sub [reg16], r/m16, imm8x86-64apxlong
sub [reg32], r/m32, imm8x86-64apxlong
sub [reg64], r/m64, imm8x86-64apxlong
sub [reg8], r/m8, imm8x86-64apxlong
sub [reg16], r/m16, imm16x86-64apxlong
sub [reg32], r/m32, imm32x86-64apxlong
sub [reg64], r/m64, imm32x86-64apxlong