adc{bwl} reg[8|16|32], r/m[8|16|32] adc{bwl} r/m[8|16|32], reg[8|16|32] adc{bwl} imm[8|16|32], r/m[8|16|32]
(reg[8|16|32] + CF) + r/m[8|16|32] -> r/m[8|16|32]
(r/m[8|16|32] + CF) + reg[8|16|32] -> reg[8|16|32]
(imm[8|16|32] + CF) + r/m[8|16|32] -> r/m[8|16|32]
Integer adds operand1 and the carry flag to operand2 and stores the result in operand2. adc is typically executed as part of a multi-byte or multi-word add operation. When an immediate byte is added to a word or long, the immediate value is sign-extended to the size of the word or long operand.
Integer add the 8-bit content of the effective memory address (ESI register plus an offset of 1) and the carry flag to the content of the address in the CL register:
adcb 1(%esi), %cl
Integer add the 16-bit content of the effective memory address (EDI register plus an offset of 4) and the carry flag to the content of the address in the DX register:
adcw 4(%edi), %dx
Integer add the 32-bit content of the address in the EDX register and the carry flag to the effective memory address (EDI register plus an offset of 4):
adcl %edx, 4(%edi)