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.