add

8086 and later

Add

add r/m8, reg8 | add r/m16, reg16 | add r/m32, reg32 | add r/m64, reg64 | add reg8, r/m8 | add reg16, r/m16 | add reg32, r/m32 | add reg64, r/m64 | add r/m16, imm8 | add r/m32, imm8 | add r/m64, imm8 | add al, imm8 | add ax, imm16 | add eax, imm32 | add rax, imm32 | add r/m8, imm8 | add r/m16, imm16 | add r/m32, imm32 | add r/m64, imm32 | add [reg8], reg8, r/m8 | add [reg16], reg16, r/m16 | add [reg32], reg32, r/m32 | add [reg64], reg64, r/m64 | add [reg8], r/m8, reg8 | add [reg16], r/m16, reg16 | add [reg32], r/m32, reg32 | add [reg64], r/m64, reg64 | add [reg16], r/m16, imm8 | add [reg32], r/m32, imm8 | add [reg64], r/m64, imm8 | add [reg8], r/m8, imm8 | add [reg16], r/m16, imm16 | add [reg32], r/m32, imm32 | add [reg64], r/m64, imm32 | add kreg8, kreg8, kreg8 | add kreg16, kreg16, kreg16 | add kreg32, kreg32, kreg32 | add kreg64, kreg64, kreg64

ADD performs integer addition: it adds its two operands together, and leaves the result in its destination (first) operand. The destination operand can be a register or a memory location. The source operand can be a register, a memory location or an immediate value.

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 ADC instruction.

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 add 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
add r/m8, reg88086lock
add r/m16, reg168086lock
add r/m32, reg32386lock
add r/m64, reg64x86-64locklong
add reg8, r/m88086
add reg16, r/m168086
add reg32, r/m32386
add reg64, r/m64x86-64long
add r/m16, imm88086lock
add r/m32, imm8386lock
add r/m64, imm8x86-64locklong
add al, imm88086
add ax, imm168086
add eax, imm32386
add rax, imm32x86-64long
add r/m8, imm88086lock
add r/m16, imm168086lock
add r/m32, imm32386lock
add r/m64, imm32x86-64locklong
add [reg8], reg8, r/m8x86-64apxlong
add [reg16], reg16, r/m16x86-64apxlong
add [reg32], reg32, r/m32x86-64apxlong
add [reg64], reg64, r/m64x86-64apxlong
add [reg8], r/m8, reg8x86-64apxlong
add [reg16], r/m16, reg16x86-64apxlong
add [reg32], r/m32, reg32x86-64apxlong
add [reg64], r/m64, reg64x86-64apxlong
add [reg16], r/m16, imm8x86-64apxlong
add [reg32], r/m32, imm8x86-64apxlong
add [reg64], r/m64, imm8x86-64apxlong
add [reg8], r/m8, imm8x86-64apxlong
add [reg16], r/m16, imm16x86-64apxlong
add [reg32], r/m32, imm32x86-64apxlong
add [reg64], r/m64, imm32x86-64apxlong
add kreg8, kreg8, kreg8recentavx512dq
add kreg16, kreg16, kreg16recentavx512dq
add kreg32, kreg32, kreg32recentavx512bw
add kreg64, kreg64, kreg64recentavx512bw