8086指令系统一览表资料.docx
《8086指令系统一览表资料.docx》由会员分享,可在线阅读,更多相关《8086指令系统一览表资料.docx(45页珍藏版)》请在冰豆网上搜索。
8086指令系统一览表资料
附录
附录一ASCII码表
附录二8086指令系统一览表
类型
汇编指令格式
功能
操作数说明
时钟周期数
字节数
数
据
传
送
类
MOVdst,src
(dst)←(src)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
seg,reg
seg,mem
mem,seg
reg,seg
mem,acc
acc,mem
9+EA
8+EA
2
4
10+EA
2
8+EA
9+EA
2
10
10
2~4
2~4
2
2~3
3~6
2
2~4
2~4
2
3
3
PUSHsrc
(SP)←(SP)-2
((SP)+1,(SP))←(src)
reg
seg
mem
11
10
16+EA
1
1
2~4
POPdst
(dst)←((SP)+1,(SP))
(SP)←(SP)+2
reg
seg
mem
8
8
17+EA
1
1
2~4
XCHGop1,op2
(op1)←→(op1)
reg,mem
reg,reg
reg,acc
17+EA
4
3
2~4
2
1
INacc,port
INacc,DX
(acc)←(port)
(acc)←((DX))
10
8
2
1
OUTport,acc
OUTDX,acc
(port)←(acc)
((DX))←(acc)
10
8
2
1
XLAT
11
1
LEAreg,src
(reg)←src
reg,mem
2+EA
2~4
LDSreg,src
(reg)←src
(DS)←(src+2)
reg,mem
16+EA
2~4
LESreg,src
(reg)←src
(ES)←(src+2)
reg,mem
16+EA
2~4
LAHF
(AH)←(FR低字节)
4
1
SAHF
(FR低字节)←(AH)
4
1
PUSHF
(SP)←(SP)-2
((SP)+1,(SP))←(FR低字节)
10
1
POPF
(FR低字节)←((SP)+1,(SP))
(SP)←(SP)+2
8
1
算
术
运
算
类
ADDdst,src
(dst)←(src)+(dst)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
ADCdst,src
(dst)←(src)+(dst)+CF
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
INCop1
(op1)←(op1)+1
reg
mem
2~3
15+EA
1~2
2~4
SUBdst,src
(dst)←(src)-(dst)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
SBBdst,src
(dst)←(src)-(dst)-CF
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
DECop1
(op1)←(op1)-1
reg
mem
2~3
15+EA
1~2
2~4
NEGop1
(op1)←0-(op1)
reg
mem
3
16+EA
2
2~4
CMPop1,op2
(op1)-(op2)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
9+EA
9+EA
3
4
10+EA
4
2~4
2~4
2
3~4
3~6
2~3
MULsrc
(AX)←(AL)*(src)
(DX,AX)←(AX)*(src)
8位reg
8位mem
16位reg
16位mem
70~77
(76~83)+EA
118~133
(124~139)+EA
2
2~4
2
2~4
IMULsrc
(AX)←(AL)*(src)
(DX,AX)←(AX)*(src)
8位reg
8位mem
16位reg
16位mem
80~98
(86~104)+EA
128~154
(134~160)+EA
2
2~4
2
2~4
DIVsrc
(AL)←(AX)/(src)的商
(AH)←(AX)/(src)的余数
(AX)←(DX,AX)/(src)的商
(DX)←(DX,AX)/(src)的余数
8位reg
8位mem
16位reg
16位mem
80~90
(86~96)+EA
144~162
(150~168)+EA
2
2~4
2
2~4
IDIVsrc
(AL)←(AX)/(src)的商
(AH)←(AX)/(src)的余数
(AX)←(DX,AX)/(src)的商
(DX)←(DX,AX)/(src)的余数
8位reg
8位mem
16位reg
16位mem
101~112
(107~118)+EA
165~184
(171~190)+EA
2
2~4
2
2~4
DAA
(AL)←AL中的和调整为组合BCD
4
1
DAS
(AL)←AL中的差调整为组合BCD
4
1
AAA
(AL)←AL中的和调整为非组合BCD
(AH)←(AH)+调整产生的进位值
4
1
AAS
(AL)←AL中的差调整为非组合BCD
(AH)←(AH)-调整产生的进位值
4
1
AAM
(AX)←AX中的积调整为非组合BCD
83
2
AAD
(AL)←(AH)*10+(AL)
(AH)←0
(注意是除法进行前调整被除数)
60
2
逻
辑
运
算
类
ANDdst,src
(dst)←(dst)∧(src)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
ORdst,src
(dst)←(dst)∨(src)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
NOTop1
(op1)←(
)
reg
mem
3
16+EA
2
2~4
XORdst,src
(dst)←(dst)⊕(src)
mem,reg
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
16+EA
9+EA
3
4
17+EA
4
2~4
2~4
2
3~4
3~6
2~3
TESTop1,op2
(op1)∧(op2)
reg,mem
reg,reg
reg,imm
mem,imm
acc,imm
9+EA
3
5
11+EA
4
2~4
2
3~4
3~6
2~3
SHLop1,1
SHLop1,CL
逻辑左移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
SALop1,1
SALop1,CL
算术右移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
SHRop1,1
SHRop1,CL
逻辑右移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
SARop1,1
SARop1,CL
算术右移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
ROLop1,1
ROLop1,CL
循环左移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
RORop1,1
RORop1,CL
循环右移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
RCLop1,1
RCLop1,CL
带进位位的循环左移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
RCRop1,1
RCRop1,CL
带进位位的循环右移
reg
mem
reg
mem
2
15+EA
8+4/bit
20+EA+4/bit
2
2~4
2
2~4
串
操
作
类
MOVSB
MOVSW
((DI))←((SI))
(SI)←(SI)±1,(DI)←(DI)±1
((DI))←((SI))
(SI)←(SI)±2,(DI)←(DI)±2
不重复:
18
重复:
9+17/rep
不重复:
18
重复:
9+17/rep
1
1
STOSB
STOSW
((DI))←(AL)
(DI)←(DI)±1
((DI))←(AX)
(DI)←(DI)±2
不重复:
11
重复:
9+10/rep
不重复:
11
重复:
9+10/rep
1
1
LODSB
LODSW
(AL)←((SI))
(SI)←(SI)±1
(AX)←((SI))
(SI)←(SI)±2
不重复:
12
重复:
9+13/rep
不重复:
12
重复:
9+13/rep
1
1
CMPSB
CMPSW
((SI))-((DI))
(SI)←(SI)±1,(DI)←(DI)±1
((SI))-((DI))
(SI)←(SI)±2,(DI)←(DI)±2
不重复:
22
重复:
9+22/rep
不重复:
22
重复:
9+22/rep
1
1
SCASB
SCASW
(AL)-((DI))
(DI)←(DI)±1
(AX)←((DI))
(DI)←(DI)±2
不重复:
15
重复:
9+15/rep
不重复:
15
重复:
9+15/rep
1
1
REPstring_instruc
(CX)=0退出重复,否则(CX)←(CX)-1并执行其后的串指令
2
1
REPE/REPZstring_instruc
(CX)=0或(ZF)=0退出重复,否则(CX)←(CX)-1并执行其后的串指令
2
1
REPNE/REPNZstring_instruc
(CX)=0或(ZF)=1退出重复,否则(CX)←(CX)-1并执行其后的串指令
2
1
控制转移类
JMPSHORTop1
JMPNEARPTRop1
JMPFARPTRop1
JMPWORDPTRop1
JMPDWORDPTRop1
无条件转移
reg
mem
15
15
15
11
18+EA
24+EA
2
3
5
2
2~4
2~4
JZ/JEop1
ZF=1则转移
16/4
2
JNZ/JNEop1
ZF=0则转移
16/4
2
JSop1
SF=1则转移
16/4
2
JNSop1
SF=0则转移
16/4
2
JP/JPEop1
PF=1则转移
16/4
2
JNP/JPOop1
PF=0则转移
16/4
2
JCop1
CF=1则转移
16/4
2
JNCop1
CF=0则转移
16/4
2
JOop1
OF=1则转移
16/4
2
JNOop1
OF=0则转移
16/4
2
JB/JNAEop1
CF=1且ZF=0则转移
16/4
2
JNB/JAEop1
CF=0或ZF=1则转移
16/4
2
JBE/JNAop1
CF=1或ZF=1则转移
16/4
2
JNBE/JAop1
CF=0且ZF=0则转移
16/4
2
JL/JNGEop1
SF⊕OF=1则转移
16/4
2
JNL/JGEop1
SF⊕OF=0则转移
16/4
2
JLE/JNGop1
SF⊕OF=1或ZF=1则转移
16/4
2
JNLE/JGop1
SF⊕OF=0且ZF=0则转移
16/4
2
JCXZop1
(CX)=0则转移
18/6
2
LOOPop1
(CX)≠0则循环
17/5
2
LOOPZ/LOOPEop1
(CX)≠0且ZF=1则循环
18/6
2
LOOPNZ/LOOPNEop1
(CX)≠0且ZF=0则循环
19/5
2
CALLdst
段内直接:
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←(IP)+D16
段内间接:
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←EA
段间直接:
(SP)←(SP)-2
((SP)+1,(SP))←(CS)
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←目的偏移地址
(CS)←目的段基址
段间间接:
(SP)←(SP)-2
((SP)+1,(SP))←(CS)
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←(EA)
(CS)←(EA+2)
reg
mem
19
16
21+EA
28
37+EA
3
2
2~4
5
2~4
RET
段内:
(IP)←((SP)+1,(SP))
(SP)←(SP)+2
段间:
(IP)←((SP)+1,(SP))
(SP)←(SP)+2
(CS)←((SP)+1,(SP))
(SP)←(SP)+2
16
24
1
1
RETexp
段内:
(IP)←((SP)+1,(SP))
(SP)←(SP)+2
(SP)←(SP)+D16
段间:
(IP)←((SP)+1,(SP))
(SP)←(SP)+2
(CS)←((SP)+1,(SP))
(SP)←(SP)+2
(SP)←(SP)+D16
20
23
3
3
INTN
INT
(SP)←(SP)-2
((SP)+1,(SP))←(FR)
(SP)←(SP)-2
((SP)+1,(SP))←(CS)
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←(type*4)
(CS)←(type*4+2)
N≠3
(N=3)
51
52
2
1
INTO
若OF=1,则
(SP)←(SP)-2
((SP)+1,(SP))←(FR)
(SP)←(SP)-2
((SP)+1,(SP))←(CS)
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←(10H)
(CS)←(12H)
53(OF=1)
4(OF=0)
1
IRET
(IP)←((SP)+1,(SP))
(SP)←(SP)+2
(CS)←((SP)+1,(SP))
(SP)←(SP)+2
(FR)←((SP)+1,(SP))
(SP)←(SP)+2
24
1
处理器控制类
CBW
(AL)符号扩展到(AH)
2
1
CBD
(AX)符号扩展到(DX)
5
1
CLC
CF清0
2
1
CMC
CF取反
2
1
STC
CF置1
2
1
CLD
DF清0
2
1
STD
DF置1
2
1
CLI
IF清0
2
1
STI
IF置1
2
1
NOP
空操作
3
1
HLT
停机
2
1
WAIT
等待
≥3
1
ESCmem
换码
8+EA
2~4
LOCK
总线封锁前缀
2
1
seg:
段超越前缀
2
1
附录三8086指令对标志位的影响
附录四8086宏汇编常用伪指令表
数据及结构定义
ASSUME
ASSUMEsegreg:
seg_name[,…]
说明段所对应的段寄存器
COMMENT
COMMENTdelimiter_text
后跟注释(代替;)
DB
[variable_name]DBoperand_list
定义字节变量
DD
[variable_name]DDoperand_list
定义双字变量
DQ
[variable_name]DQoperand_list
定义四字变量
DT
[variable_name]DToperand_list
定义十字变量
DW
[variable_name]DWoperand_list
定义字变量
DUP
DB/DD/DQ/DT/DWrepeat_countDUP(operand_list)
变量定义中的重复从句
END
END[lable]
源程序结束
EQU
expression_nameEQUexpression
定义符号
=
label=expression
赋值
EXTRN
EXTRNname:
type[,…](typeis:
byte,word,dwordornear,far)
说明本模块中使用的外部符号
GROUP
nameGROUPseg_name_list
指定段在64K的物理段内
INCLUDE
INCLUDEfilespec
包含其它源文件
LABEL
nameLABLEtype(typeis:
byte,word,dwordornear,far)
定义name的属性
NAME
NAMEmodule_name
定义模块名
ORG
ORGexpression
地址计数器置expression值
PROC
procedure_namePROCtype(typeis:
nearorfar)
定义过程开始
ENDP
procedure_nameENDP
定义过程结束
PUBLIC
PUBLICsymbol_list
说明本模块中定义的外部符号
PURGE
PURGEexpression_name_list
取消指定的符号(EQU定义)
RECORD
record_nameRECORDfield_name:
length[=preassignment][,…]
定义记录
SEGMEMT
seg_nameSEGMENT[align_type][combine_type][‘class’]
定义段开始
ENDS
seg_nameENDS
定义段结束
STRUC
structure_nameSTRUC
structure_nameENDS
定义结构开始
定义结构结束
条件汇编
IF
IFargument
定义条件汇编开始
ELSE
ELSE
条件分支
ENDIF
ENDIF
定义条件汇编结束
IF
IFexpression
表达式expression不为0则真
IFE
IFEexpression
表达式expression为0则真
IF1
IF1
汇编程序正在扫描第一次为真
IF2
IF2
汇编程序正在扫描第二次为真
IFDEF
IFDEFsymbol
符号symbol已定义则真
IFNDEF
IFNDEFsymbol
符号symbol未定义则真
IFB
IFB
变量variable为空则真
IFNB
IFNB
变量variable不为空则真
IFIDN
IFIDN
字串string1与string2相同为真
IFDIF
IFDIF
字串string1与string2不同为真
宏
MACRO
macro_nameMACRO