<<< AAA Adjust AL after BCD Addition     Index     ADD Arithmetic Addition >>>


ADC Arithmetic Addition with Carry

Flags affected:

        O D I T S Z A P C  OF: Overflow flag  TF: Trap flag AF: Aux carry
        F F F F F F F F F  DF: Direction flag SF: Sign flag PF: Parity flag
        *       * * * * *  IF: Interrupt flag ZF: Zero flag CF: Carry flag

Legal forms:

        ADC r8,r8
        ADC m8,r8
        ADC r8,m8
        ADC r16,r16
        ADC m16,r16
        ADC r16,m16
        ADC r32,r32    386+
        ADC m32,r32    386+
        ADC r32,m32    386+
        ADC r8,i8
        ADC m8,i8
        ADC r16,i16
        ADC m16,i16
        ADC r32,i32    386+
        ADC m32,i32    386+
        ADC r16,i8
        ADC m16,i8
        ADC r32,i8     386+
        ADC m32,i8     386+
        ADC AL,i8
        ADC AX,i16
        ADC EAX,i32    386+

Examples:

        ADC BX,DI
        ADC EAX,5
        ADC AX,0FFFFH            ;Uses single-byte opcode
        ADC AL,42H               ;Uses single-byte opcode
        ADC BP,17H
        ADC WORD [BX+SI+Inset],5
        ADC WORD ES:[BX],0B800H

Notes:

ADC adds the source operand and the Carry flag to the destination operand, and after the operation, the result replaces the destination operand. The add operation is an arithmetic add, and the carry allows multiple-precision additions across several registers or memory locations. (To add without taking the Carry flag into account, use the ADD instruction.) All affected flags are set according to the operation. Most importantly, if the result does not fit into the destination operand, the Carry flag is set to 1.

        r8 = AL AH BL BH CL CH DL DH        r16 = AX BX CX DX BP SP SI DI
        sr = CS DS SS ES FS GS              r32 = EAX EBX ECX EDX EBP ESP ESI EDI
        m8 = 8-bit memory data              m16 = 16-bit memory data
        m32 = 32-bit memory data            i8 = 8-bit immediate data
        i16 = 16-bit immediate data         i32 = 32-bit immediate data
        d8 = 8-bit signed displacement      d16 = 16-bit signed displacement
        d32 = 32-bit unsigned displacement


<<< AAA Adjust AL after BCD Addition     Index     ADD Arithmetic Addition >>>