Você está na página 1de 1

8086 INSTRUCTION SET

OPCODE
AAA
AAD
AAM
AAS
ADC
ADD
AND
CALL
CBW
CLC
CDL
CLI
CMC
CMP
CMPS
CMPSB
CMPSW
CWD
DAA
DAS
DEC
DIV
ESC
HLT
IDIV
IMUL
IN
INC
INT
INTO
IRET
JA
JAE
JB
JBE
JC
JCXZ
JE
JG
JGE
JL
JLE
JMP

DESCRIPTION
ASCII adjust addition
ASCII adjust division
ASCII adjust multiply
ASCII adjust subtraction
dt,sc Add with carry
dt,sc Add
dt,sc Logical AND
proc
Call a procedure
Convert byte to word
Clear carry flag
Clear direction flag
Clear interrupt flag
Complement carry flag
dt,sc Compare
[dt,sc] Compare string
"
"
bytes
"
"
words
Convert word to double word
Decimal adjust addition
Decimal adjust subtraction
dt
Decrement
sc
Unsigned divide
code,sc Escape
Halt
sc
Integer divide
sc
Integer multiply
ac,port Input from port
dt
Increment
type
Interrupt
Interrupt if overflow
Return from interrupt
slabel Jump if above
slabel Jump if above or equal
slabel Jump if below
slabel Jump if below or equal
slabel Jump if carry
slabel Jump if CX is zero
slabel Jump if equal
slabel Jump if greater
slabel Jump if greater or equal
slabel Jump if less
slabel Jump if less or equal
label Jump

JNA
JNAE
JNB
JNBE
JNC
JNE
JNG
JNGE
JNL
JNLE
JNZ
JNO
JNP
JNS
JO
JPO
JP
JPE
JS
JZ
LAHF
LDS
LEA
LES
LOCK
LODS
LODSB
LODSW
LOOP
LOOPE
LOOPZ
LOOPNE
LOOPNZ
MOV
MOVS
MOVSB
MOVSW
MUL
NEG
NOP
NOT
OR
OUT
POP

slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
slabel
dt,sc
dt,sc
dt,sc
[sc]
"
"
slabel
slabel
slabel
slabel
slabel
dt,sc
[dt,sc]
"
"
sc
dt

Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Jump
Load
Load
Load
Load
Lock
Load
Loop
Loop
Loop
Loop
Loop
Move
Move

if not above
if not above or equal
if not below
if below or equal
if no carry
if not equal
if not greater
if not greater or equal
if not less
if not less or equal
if not zero
if not overflow
if not parity
if not sign
if overflow
if parity odd
if parity
if parity even
if sign
if zero
AH from flags
pointer using DS
effective address
pointer using ES
bus
string
"
bytes
"
words
if
if
if
if

equal
zero
not equal
not zero

string
"
bytes
"
words
Unsigned multiply
Negate
No operation
dt
Logical NOT
dt,sc
Logical OR
port,ac output to port
dt
Pop word off stack

POPF
PUSH
PUSHF
RCL
RCR
REP
REPE
REPZ
REPNE
REPNZ
RET
ROL
ROR
SAHF
SAL
SHL
SAR
SBB
SCAS
SCASB
SCASW
SHR
STC
STD
STI
STOS
STOSB
STOSW
SUB
TEST
WAIT
XCHG
XLAT
XLATB
XOR

sc
dt,cnt
dt,cnt

[pop]
dt,cnt
dt,cnt
dt,cnt
dt,cnt
dt,cnt
dt,sc
[dt]
"
"
dt,cnt

[dt]
"
"
dt,sc
dt,sc
dt,sc
table
"
dt,sc

Pop flags off stack


Push word onto stack
Push flags onto stack
Rotate left through carry
Rotate right through carry
Repeat string operation
Repeat while equal
Repeat while zero
Repeat while not equal
Repeat while not zero
Return from procedure
Rotate left
Rotate right
Store AH into flags
Shift arithmetic left
Shift logical left
Shift arithmetic right
Subtract with borrow
Scan string
"
byte
"
word
Shift logical right
Set carry flag
Set direction flag
Set interrupt flag
Store string
"
byte
"
word
Subtraction
Test (logical AND)
Wait for 8087
Exchange
Translate
"
Logical exclusive OR

Notes:
dt - destination
sc source
label may be near or far address
slabel near address