3-21
INSTRUCTION SET REFERENCE
ADCAdd with Carry
Description
This instruction adds the destination operand (first operand), the source operand (second
operand), and the carry (CF) flag and stores the result in the destination operand. The destination
operand can be a register or a memory location; the source operand can be an immediate, a
register, or a memory location. (However, two memory operands cannot be used in one instruc-
tion.) The state of the CF flag represents a carry from a previous addition. When an immediate
value is used as an operand, it is sign-extended to the length of the destination operand format.
The ADC instruction does not distinguish between signed or unsigned operands. Instead, the
processor evaluates the result for both data types and sets the OF and CF flags to indicate a carry
in the signed or unsigned result, respectively. The SF flag indicates the sign of the signed result.
The ADC instruction is usually executed as part of a multibyte or multiword addition in which
an ADD instruction is followed by an ADC instruction.
Operation
DEST
<
DEST + SRC + CF;
Flags Affected
The OF, SF, ZF, AF, CF, and PF flags are set according to the result.
Opcode
Instruction
Description
14 ib
ADC AL,imm8
Add with carry imm8 to AL
15 iw
ADC AX,imm16
Add with carry imm16 to AX
15 id
ADC EAX,imm32
Add with carry imm32 to EAX
80 /2 ib
ADC r/m8,imm8
Add with carry imm8 to r/m8
81 /2 iw
ADC r/m16,imm16
Add with carry imm16 to r/m16
81 /2 id
ADC r/m32,imm32
Add with CF imm32 to r/m32
83 /2 ib
ADC r/m16,imm8
Add with CF sign-extended imm8 to r/m16
83 /2 ib
ADC r/m32,imm8
Add with CF sign-extended imm8 into r/m32
10 /r
ADC r/m8,r8
Add with carry byte register to r/m8
11 /r
ADC r/m16,r16
Add with carry r16 to r/m16
11 /r
ADC r/m32,r32
Add with CF r32 to r/m32
12 /r
ADC r8,r/m8
Add with carry r/m8 to byte register
13 /r
ADC r16,r/m16
Add with carry r/m16 to r16
13 /r
ADC r32,r/m32
Add with CF r/m32 to r32