ADC             Add with Carry                       Flags: O D I T S Z A P C
* - - - * * * * *
ADC destination,source

Logic destination ← destination + source + CF

ADC sums the operands, adds 1 if the carry flag (CF) is set and
replaces the destination operand with the result. If CF is
cleared, ADC does the same operation as the ADD instruction.

Example: add eax,ebx
adc edx,0 ; Add 1 if CF set


Opcode Format
10 /r ADC r/m8,r8
11 /r ADC r/m16,r16
11 /r ADC r/m32,r32
12 /r ADC r8,r/m8
13 /r ADC r16,r/m16
13 /r ADC r32,r/m32
14 ib ADC AL,imm8
15 iw ADC AX,imm16
15 id ADC EAX,imm32
80 /2 ib ADC r/m8,imm8
81 /2 iw ADC r/m16,imm16
81 /2 id ADC r/m32,imm32
83 /2 ib ADC r/m16,imm8
83 /2 ib ADC r/m32,imm8


Length and timing
Operands Bytes 8088 186 286 386 486 Pentium
reg, reg 2 3 3 2 2 1 1 PU
mem, reg 2+d(0,2) 24+EA 10 7 7 3 3 PU
reg, mem 2+d(0,2) 13+EA 10 7 6 2 2 PU
reg, imm 2+i(1,2) 4 4 3 2 1 1 PU
mem, imm 2+d(0,2) 23+EA 16 7 7 3 3 PU*
+i(1,2)
acc, imm 1+i(1,2) 4 4 3 2 1 1 PU

* = not pairable if there is a displacement and immediate