adc

8086 and later

Add with Carry

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

ADC performs integer addition: it adds its two operands together, plus the value of the carry flag, 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.

To add two numbers without also adding the contents of the carry flag, use ADD (ADD).

Loading...

Forms

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