8086
Table 2. Instruction Set Summary (Continued)
Mnemonic and
Instruction Code
Description
ARITHMETIC 76543210 76543210 76543210 76543210
ADD
e
Add:
Reg./Memory with Register to Either 000000dw modregr/m
Immediate to Register/Memory 100000sw mod000r/m data data if s: w
e
01
Immediate to Accumulator 0000010w data data if w
e
1
ADC
e
Add with Carry:
Reg./Memory with Register to Either 000100dw modregr/m
Immediate to Register/Memory 100000sw mod010r/m data data if s: w
e
01
Immediate to Accumulator 0001010w data data if w
e
1
INC
e
Increment:
Register/Memory 1111111w mod000r/m
Register 01000reg
AAA
e
ASCII Adjust for Add 00110111
BAA
e
Decimal Adjust for Add 00100111
SUB
e
Subtract:
Reg./Memory and Register to Either 001010dw modregr/m
Immediate from Register/Memory 100000sw mod101r/m data data if s w
e
01
Immediate from Accumulator 0010110w data data if w
e
1
SSB
e
Subtract with Borrow
Reg./Memory and Register to Either 000110dw modregr/m
Immediate from Register/Memory 100000sw mod011r/m data data if s w
e
01
Immediate from Accumulator 000111w data data if w
e
1
DEC
e
Decrement:
Register/memory 1111111w mod001r/m
Register 01001 reg
NEG
e
Change sign 1111011w mod011 r/m
CMP
e
Compare:
Register/Memory and Register 001110dw modregr/m
Immediate with Register/Memory 100000sw mod111r/m data data if s w
e
01
Immediate with Accumulator 0011110w data data if w
e
1
AAS
e
ASCII Adjust for Subtract 00111111
DAS
e
Decimal Adjust for Subtract 00101111
MUL
e
Multiply (Unsigned) 1111011w mod100r/m
IMUL
e
Integer Multiply (Signed) 1111011w mod101r/m
AAM
e
ASCII Adjust for Multiply 11010100 00001010
DIV
e
Divide (Unsigned) 1111011w mod110r/m
IDIV
e
Integer Divide (Signed) 1111011w mod111r/m
AAD
e
ASCII Adjust for Divide 11010101 00001010
CBW
e
Convert Byte to Word 10011000
CWD
e
Convert Word to Double Word 10011001
Mnemonics
©
Intel, 1978
27