8088
8086/8088 Instruction Set Summary (Continued)
Mnemonic and
Description
Instruction Code
ARITHMETIC
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
e
ADD
Add:
Reg./Memory with Register to Either
Immediate to Register/Memory
Immediate to Accumulator
0 0 0 0 0 0 d w
1 0 0 0 0 0 s w
0 0 0 0 0 1 0 w
mod reg r/m
mod 0 0 0 r/m
data
e
e
data
data if s:w
01
e
e
data if w
1
1
e
ADC
Add with Carry:
Reg./Memory with Register to Either
Immediate to Register/Memory
Immediate to Accumulator
0 0 0 1 0 0 d w
1 0 0 0 0 0 s w
0 0 0 1 0 1 0 w
mod reg r/m
mod 0 1 0 r/m
data
data
data if s:w
01
data if w
e
INC
Increment:
Register/Memory
Register
1 1 1 1 1 1 1 w
0 1 0 0 0 reg
mod 0 0 0 r/m
e
e
e
AAA
BAA
SUB
ASCII Adjust for Add
Decimal Adjust for Add
Subtract:
0 0 1 1 0 1 1 1
0 0 1 0 0 1 1 1
Reg./Memory and Register to Either
Immediate from Register/Memory
Immediate from Accumulator
0 0 1 0 1 0 d w
1 0 0 0 0 0 s w
0 0 1 0 1 1 0 w
mod reg r/m
mod 1 0 1 r/m
data
e
e
data
data if s:w
01
01
e
e
data if w
1
1
e
SSB
Subtract with Borrow
Reg./Memory and Register to Either
Immediate from Register/Memory
Immediate from Accumulator
0 0 0 1 1 0 d w
1 0 0 0 0 0 s w
0 0 0 1 1 1 w
mod reg r/m
mod 0 1 1 r/m
data
data
data if s:w
data if w
e
DEC
Decrement:
Register/memory
Register
1 1 1 1 1 1 1 w
0 1 0 0 1 reg
1 1 1 1 0 1 1 w
mod 0 0 1 r/m
mod 0 1 1 r/m
e
e
NEG
CMP
Change sign
Compare:
Register/Memory and Register
Immediate with Register/Memory
Immediate with Accumulator
0 0 1 1 1 0 d w
1 0 0 0 0 0 s w
0 0 1 1 1 1 0 w
0 0 1 1 1 1 1 1
0 0 1 0 1 1 1 1
1 1 1 1 0 1 1 w
1 1 1 1 0 1 1 w
1 1 0 1 0 1 0 0
1 1 1 1 0 1 1 w
1 1 1 1 0 1 1 w
1 1 0 1 0 1 0 1
1 0 0 1 1 0 0 0
1 0 0 1 1 0 0 1
mod reg r/m
mod 1 1 1 r/m
data
e
data
data if s:w
01
e
data if w
1
e
e
e
AAS
DAS
MUL
ASCII Adjust for Subtract
Decimal Adjust for Subtract
Multiply (Unsigned)
mod 1 0 0 r/m
mod 1 0 1 r/m
0 0 0 0 1 0 1 0
mod 1 1 0 r/m
mod 1 1 1 r/m
0 0 0 0 1 0 1 0
e
IMUL
AAM
Integer Multiply (Signed)
ASCII Adjust for Multiply
e
e
DIV
Divide (Unsigned)
e
IDIV
AAD
CBW
CWD
Integer Divide (Signed)
e
e
e
ASCII Adjust for Divide
Convert Byte to Word
Convert Word to Double Word
27