* remove "\r" nonsense
[mascara-docs.git] / i386 / i386.reference / ADC.htm
blobadc9246eb4626d89cff946f5c6105e11e1442b7c
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>80386 Programmer's Reference Manual -- Opcode ADC</TITLE>
5 </HEAD>
6 <BODY>
7 <B>up:</B> <A HREF="c17.htm">
8 Chapter 17 -- 80386 Instruction Set</A><BR>
9 <B>prev:</B><A HREF="AAS.htm"> AAS ASCII Adjust AL after Subtraction</A><BR>
10 <B>next:</B><A HREF="ADD.htm"> ADD Add</A>
11 <P>
12 <HR>
13 <P>
14 <H1>ADC -- Add with Carry</H1>
16 <PRE>
17 Opcode Instruction Clocks Description
19 14 ib ADC AL,imm8 2 Add with carry immediate byte to AL
20 15 iw ADC AX,imm16 2 Add with carry immediate word to AX
21 15 id ADC EAX,imm32 2 Add with carry immediate dword to EAX
22 80 /2 ib ADC r/m8,imm8 2/7 Add with carry immediate byte to r/m
23 byte
24 81 /2 iw ADC r/m16,imm16 2/7 Add with carry immediate word to r/m
25 word
26 81 /2 id ADC r/m32,imm32 2/7 Add with CF immediate dword to r/m
27 dword
28 83 /2 ib ADC r/m16,imm8 2/7 Add with CF sign-extended immediate
29 byte to r/m word
30 83 /2 ib ADC r/m32,imm8 2/7 Add with CF sign-extended immediate
31 byte into r/m dword
32 10 /r ADC r/m8,r8 2/7 Add with carry byte register to r/m
33 byte
34 11 /r ADC r/m16,r16 2/7 Add with carry word register to r/m
35 word
36 11 /r ADC r/m32,r32 2/7 Add with CF dword register to r/m dword
37 12 /r ADC r8,r/m8 2/6 Add with carry r/m byte to byte
38 register
39 13 /r ADC r16,r/m16 2/6 Add with carry r/m word to word
40 register
41 13 /r ADC r32,r/m32 2/6 Add with CF r/m dword to dword register
42 </PRE>
44 <H2>Operation</H2>
46 <PRE>
47 DEST := DEST + SRC + CF;
48 </PRE>
50 <H2>Description</H2>
52 ADC performs an integer addition of the two operands DEST and SRC and the
53 carry flag, CF. The result of the addition is assigned to the first operand
54 (DEST), and the flags are set accordingly. ADC is usually executed as part
55 of a multi-byte or multi-word addition operation. When an immediate byte
56 value is added to a word or doubleword operand, the immediate value is first
57 sign-extended to the size of the word or doubleword operand.
59 <H2>Flags Affected</H2>
61 OF, SF, ZF, AF, CF, and PF as described in <A HREF="appc.htm">Appendix C</A>
63 <H2>Protected Mode Exceptions</H2>
65 #GP(0) if the result is in a nonwritable segment; #GP(0) for an illegal
66 memory operand effective address in the CS, DS, ES, FS, or GS segments;
67 #SS(0) for an illegal address in the SS segment; #PF(fault-code) if page
68 fault
70 <H2>Real Address Mode Exceptions</H2>
72 Interrupt 13 if any part of the operand would lie outside of the effective
73 address space from 0 to 0FFFFH
75 <H2>Virtual 8086 Mode Exceptions</H2>
77 Same exceptions as in Real Address Mode; #PF(fault-code) for a page fault
80 <P>
81 <HR>
82 <P>
83 <B>up:</B> <A HREF="c17.htm">
84 Chapter 17 -- 80386 Instruction Set</A><BR>
85 <B>prev:</B><A HREF="AAS.htm"> AAS ASCII Adjust AL after Subtraction</A><BR>
86 <B>next:</B><A HREF="ADD.htm"> ADD Add</A>
87 </BODY>