M:存储器
A:累加器
R:寄存器
SEGR:段寄存器
IMM:立即数
X:标志位状态依运算或操作结果而定
U:相应标志位未定义
-:不影响
同上: #
数据传送指令 |
时钟数 |
访问次数 |
字节数 |
对标志位影响 |
指令意义 |
MOV M,A |
10(14) |
1 |
3 |
- |
A-->M |
MOV A,M |
10(14) |
1 |
3 |
- |
M-->A |
MOV R1,R2 |
2 |
- |
2 |
- |
R2-->R1 |
MOV R,M |
8(12)+EA |
1 |
2-4 |
- |
M-->R |
MOV M,R |
9(3)+EA |
1 |
2-4 |
- |
R-->M |
MOV R,IMM |
4 |
- |
2-3 |
- |
IMM-->R |
MOV M,IMM |
10(14)+EA |
1 |
3-6 |
- |
IMM-->M |
MOV SEGR,R16 |
2 |
- |
2 |
- |
R16-->SEGR |
MOV SEGR,M |
8(12)+EA |
1 |
2-4 |
- |
M-->SEGR |
MOV R16,SEGR |
2 |
- |
2 |
- |
SEGR-->R16 |
MOV M,SEGR |
9(13)+EA |
1 |
2-4 |
- |
SEGR-->M |
LEA R16,M |
2+EA |
- |
2-4 |
- |
OFFSET M-->R16 |
LDS R16,M32 |
24+EA |
2 |
2-4 |
- |
M32 段地址-->DS, M32 偏移地址-->R16 |
LES R16,M32 |
24+EA |
2 |
2-4 |
- |
M32 段地址-->ES, M32 偏移地址-->R16 |
SAHF |
4 |
- |
1 |
低8位改变 |
AH-->FLAG 低8位 |
LAHF |
4 |
- |
1 |
- |
FLAG低8位-->AH |
POP R |
12 |
1 |
1 |
- |
栈顶字-->R |
POP SEGR(CS非法) |
12 |
1 |
1 |
- |
栈顶字-->SEGR |
POP M |
25+EA |
2 |
2-4 |
- |
栈顶字-->M |
POPF |
8 |
1 |
1 |
各标志位均改变 |
栈顶字-->FLAG |
PUSHF |
10 |
1 |
1 |
- |
FLAGS进栈 |
PUSH R |
15 |
1 |
1 |
- |
R进栈 |
PUSH SEGR(CS非法) |
14 |
1 |
1 |
- |
SEGR进栈 |
PUSH M |
24+EA |
2 |
2-4 |
- |
M进栈 |
XCHG A,R |
3 |
- |
1 |
- |
A<-->R |
XCHG R1,R2 |
4 |
- |
2 |
- |
R1<-->R2 |
XCHG M,R |
17(25)+EA |
2 |
2-4 |
- |
M<-->R |
XLAT 源表 |
11 |
1 |
1 |
- |
[BX+AL]-->AL |
IN AL,IMM8 |
10(14) |
1 |
2 |
- |
[IMM8]-->AL |
IN AX,IMM8 |
10(14) |
1 |
2 |
- |
[IMM8+1][IMM8]-->AX |
IN AL,DX |
8(12) |
1 |
1 |
- |
[DX]-->AL |
IN AX,DX |
8(12) |
1 |
1 |
- |
[DX+1][DX]-->AX |
OUT IMM8,AL |
10(14) |
1 |
2 |
- |
AL-->[IMM8] |
OUT IMM8,AX |
10(14) |
1 |
2 |
- |
AX-->[IMM8],[IMM8+1] |
OUT DX,AL |
8(12) |
1 |
1 |
- |
AL-->DX |
OUT DX,AX |
8(12) |
1 |
1 |
- |
AX-->[-DX],[DX+1] |
算术运算指令 |
时钟数 |
访问次数 |
字节数 |
对标志位影响 |
指令意义 |
- |
- |
- |
- |
O D I T S Z A P C |
- |
ADD R,M |
9(13)+EA |
1 |
2-4 |
X - - - X X X X X |
R+M-->R |
ADD R,IMM |
4 |
- |
3-4 |
X - - - X X X X X |
R+IMM-->R |
ADD A,IMM |
4 |
1 |
2-3 |
X - - - X X X X X |
A+IMM-->A |
ADD M,IMM |
17(25)+EA |
2 |
3-6 |
X - - - X X X X X |
M+IMM-->M |
ADD M,R |
16(24)+EA |
2 |
2-4 |
X - - - X X X X X |
M+R-->M |
ADC R1,R2 |
3 |
- |
2 |
X - - - X X X X X |
带进位加:目的操作数+源操作数+进位标志 |
ADC R,M |
9(13)+EA |
1 |
2-4 |
X - - - X X X X X |
-->目的操作数 |
ADC R,IMM |
4 |
- |
3-4 |
X - - - X X X X X |
|
ADC A,IMM |
4 |
- |
2-3 |
X - - - X X X X X |
|
ADC M,IMM |
17(25)+EA |
2 |
3-6 |
X - - - X X X X X |
|
ADC M,R |
16(24)+EA |
2 |
2-4 |
X - - - X X X X X |
|
INC R8 |
3 |
- |
2 |
X - - - X X X X - |
R8+1-->R8 |
INC R16 |
2 |
- |
1 |
X - - - X X X X - |
R16+1-->R16 |
INC M |
15(23)+EA |
2 |
2-4 |
X - - - X X X X - |
M+1-->M |
AAA |
4 |
- |
1 |
U - - - U U X U X |
调整AL中非压缩BCD之和 |
DAA |
4 |
- |
1 |
U - - - X X X X X |
调整AL中的压缩BCD之和 |
SUB R1,R2 |
3 |
- |
2 |
X - - - X X X X X |
R1-R2-->R1 |
SUB R,M |
9(13)+EA |
1 |
2-4 |
X - - - X X X X X |
R-M-->R |
SUB R,IMM |
4 |
- |
3-4 |
X - - - X X X X X |
R-IMM-->R |
SUB A,IMM |
4 |
- |
2-3 |
X - - - X X X X X |
A-IMM-->A |
SUB M,IMM |
17(25)+EA |
2 |
3-6 |
X - - - X X X X X |
M-IMM-->M |
SUB M,R |
16(24)+EA |
2 |
2-4 |
X - - - X X X X X |
M-R-->M |
SUB R1,R2 |
3 |
- |
2 |
X - - - X X X X X |
带借位减:目的-源-进位标志 |
SUB R,M |
9(13)+EA |
1 |
2-4 |
X - - - X X X X X |
-->目的 |
SUB R,IMM |
4 |
- |
3-4 |
X - - - X X X X X |
|
SUB A,IMM |
4 |
- |
2-3 |
X - - - X X X X X |
|
SUB M,IMM |
17(25)+EA |
2 |
3-6 |
X - - - X X X X X |
|
SUB M,R |
16(24)+EA |
2 |
2-4 |
X - - - X X X X X |
|
DEC R8 |
3 |
- |
2 |
X - - - X X X X - |
R8-1-->R8 |
DEC R16 |
2 |
- |
1 |
X - - - X X X X - |
R16-1-->R16 |
DEC M |
15(23)+EA |
2 |
2-4 |
X - - - X X X X - |
M-1-->M |
NEG R |
2 |
- |
2 |
X - - - X X X X X |
0-R-->R |
NEG M |
16(24)+EA |
2 |
2-4 |
X - - - X X X X X |
0-M-->M |
CMP R1,R2 |
3 |
- |
2 |
X - - - X X X X X |
R1-R2 |
CMP R,M |
9(13)+EA |
- |
2-4 |
X - - - X X X X X |
R-M |
CMP R,IMM |
4 |
- |
3-4 |
X - - - X X X X X |
R-IMM |
CMP A,IMM |
4 |
- |
2-3 |
X - - - X X X X X |
A-IMM |
CMP M,IMM |
10(14)+EA |
- |
3-6 |
X - - - X X X X X |
M-IMM |
CMP M,R |
9(13)+EA |
- |
2-4 |
X - - - X X X X X |
M-R |
AAS |
4 |
- |
1 |
U - - - U U X U |
X调整AL中非压缩BCD之差 |
DAS |
4 |
- |
1 |
X - - - X X X X |
X调整AL中压缩BCD之差 |
MUL R8 |
70-77 |
- |
2 |
X - - - U U U U X |
AL*R8-->AX |
MUL R16 |
118-133 |
- |
2 |
X - - - U U U U X |
AX*R16-->DX:AX |
MUL M8 |
(76to83)+EA |
1 |
2-4 |
X - - - U U U U X |
AL*M-->AX |
MUL M16 |
(128to164)+EA |
1 |
2-4 |
X - - - U U U U X |
AX*M16-->DX:AX |
IMUL R8 |
80-98 |
- |
2 |
X - - - U U U U X |
除参与运算的数为带符合整数外,与MUL同 |
IMUL R16 |
128-154 |
- |
2 |
X - - - U U U U X |
|
IMUL M8 |
(86to104)+EA |
1 |
2-4 |
X - - - U U U U X |
|
IMUL M16 |
(138to164)+EA |
1 |
2-4 |
X - - - U U U U X |
|
AMM |
83 |
- |
1 |
U - - - X X U X U |
调整AX中的非压缩BCD之积 |
<-DIV R8 |
80-90 |
- |
2 |
U - - - U U U U U |
AX/R8的商,余数-->AL:AH |
<-DIV R16 |
144-162 |
- |
2 |
#:同上 |
DX:AX/R16的商,余数-->AX:DX |
<-DIV M8 |
(86to92)+EA |
1 |
2-4 |
# |
AX/M8的商,余数-->AL:AH |
<-DIV M16 |
(154to172)+EA |
1 |
2-4 |
# |
DX:AX/M16的商,余数-->AX:DX |
IDIV R8 |
101-112 |
- |
2 |
# |
#:参与运算数为带符号整数 |
IDIV R16 |
165-184 |
- |
2 |
|
# |
IDIV M8 |
(107to118)+EA |
1 |
2-4 |
|
# |
IDIV M16 |
(175to194)+EA |
1 |
2-4 |
|
# |
AAD |
60 |
- |
2 |
U - - - X X U X U |
将AX中的非压缩BCD调整,以便除 |
CBW |
2 |
- |
1 |
- |
若 AL<80H,AH=0,否则AH=FFH |
CWD |
5 |
- |
1 |
- |
若 AX<8000H,DX=0;否则DX=FFFFH |
逻辑运算指令 |
时钟数 |
访问次数 |
字节数 |
对标志位影响 |
指令意义 |
- |
- |
- |
- |
O D I T S Z A P C |
- |
NOT R |
3 |
- |
2 |
- |
!R-->R |
NOT M |
16(24)+EA |
2 |
2-4 |
- |
!M-->M |
SAL/SHL R,1 |
2 |
- |
2 |
X - - - X X U X X |
算术,逻辑左移 1 次或 CL位 |
SAL/SHL R,CL |
8+4/bit |
- |
2 |
# |
# |
SAL/SHL M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
SAL/SHL M,CL |
20(28)+EA+4/bit |
2 |
2-4 |
# |
# |
SAR R,1 |
2 |
- |
2 |
0 |
- - - X X U X X |
SAR R,CL |
8+4/bit |
- |
2 |
# |
# |
SAR M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
SAR M,CL |
20(28)+EA+4/bit |
2 |
2-4 |
# |
# |
SHR R,1 |
2 |
- |
2 |
X - - - X X U X X |
逻辑右移 1 位或 CL位 |
SHR R,CL |
8+4/bit |
- |
2 |
# |
# |
SHR M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
SHR M,CL |
20(23)+EA+4/bit |
2 |
2-4 |
# |
# |
ROL R,1 |
2 |
- |
2 |
X - - - - - - - X |
不通过进位的循环左移 1 位或 CL位 |
ROL R,CL |
8+4/bit |
- |
2 |
# |
# |
ROL M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
ROL M,CL |
20(28)+EA+4/bit |
2 |
2-4 |
# |
# |
ROR R,1 |
2 |
- |
2 |
# |
不含进位的循环右移 1 位或 CL位 |
ROR R,CL |
8+4/bit |
- |
2 |
# |
# |
ROR M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
ROR M,CL |
20(28)+EA+4/bit |
2 |
2-4 |
# |
# |
RCL R,1 |
2 |
- |
2 |
# |
含进位的循环左移 1 位或 CL位 |
RCL R,CL |
8+4/bit |
- |
2 |
# |
# |
RCL M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
RCL M,CL |
20(28)+EA+4/bit |
2 |
2-4 |
# |
# |
RCR R,1 |
2 |
- |
2 |
# |
含进位的循环右移 1 位或 CL位 |
RCR R,CL |
8+4/bit |
- |
2 |
# |
# |
RCR M,1 |
15(23)+EA |
2 |
2-4 |
# |
# |
RCR M,CL |
20(28)+EA+4/bit |
2 |
2-4 |
# |
# |
AND R1,R2 |
3 |
- |
2 |
0 - - - X X U X 0 |
R1&R2-->R1 |
AND R,M |
9(13)+EA |
1 |
2-4 |
# |
R&M-->R |
AND R,IMM |
4 |
- |
3-4 |
# |
R&IMM-->R |
AND A,IMM |
4 |
- |
2-3 |
# |
A&IMM-->A |
AND M,IMM |
17(25)+EA |
2 |
3-6 |
# |
M&IMM-->M |
AND M,R |
16(24)+EA |
2 |
2-4 |
# |
M&R-->M |
TEST R1,R2 |
3 |
- |
2 |
# |
R1&R2 |
TEST R,M |
9(13)+EA |
1 |
2-4 |
# |
R&M |
TEST R,IMM |
5 |
- |
3-4 |
# |
R&IMM |
TEST A,IMM |
4 |
- |
2-3 |
# |
A&IMM |
TEST M,IMM |
11+EA |
- |
3-6 |
# |
M&IMM |
OR R1,R2 |
3 |
- |
2 |
# |
R1orR2-->R1 |
OR R,M |
9(13)+EA |
1 |
2-4 |
# |
R or M-->R |
OR R,IMM |
4 |
- |
3-4 |
# |
R or IMM-->R |
OR A,IMM |
4 |
- |
2-3 |
# |
A or IMM-->A |
OR M,IMM |
17(25)+EA |
2 |
3-6 |
# |
M or IMM-->M |
OR M,R |
16(24)+EA |
2 |
2-4 |
# |
M or R-->M |
XOR R1,R2 |
3 |
- |
2 |
# |
R1 ^R2-->R1 |
XOR R,M |
9(13)+EA |
1 |
2-4 |
# |
R^M-->R |
XOR R,IMM |
4 |
- |
3-4 |
# |
R^IMM-->R |
XOR A,IMM |
4 |
- |
2-3 |
# |
A^IMM-->A |
XOR M,IMM |
17(25)+EA |
2 |
3-6 |
# |
M^IMM-->M |
XOR M,R |
16(24)+EA |
2 |
2-4 |
# |
M^R-->M |
串操作指令 |
时钟数 |
访问次数 |
字节数 |
对标志位影响 |
指令意义 |
- |
- |
- |
- |
O D I T S Z A P C |
- |
MOVS 目的串,源串 |
18(26) |
2 |
1 |
- |
源串-->目的串,修改源目的串地址 |
REP MOVS 目的串,源串 |
9+17(25)/REP |
2/REP |
1 |
- |
# |
CMPS 目的串,源串 |
22(30) |
2 |
1 |
X - - - X X X X X |
源串-目的串, |
REP CMPS 目的串,源串 |
9+22(30)/REP |
2/REP |
1 |
# |
(SI+-1)/(SI+-2),(DI+-1)(DI+-2) |
SCAS 目的串 |
15(19) |
1 |
1 |
# |
(AL-字节串)/(AX-字符串), |
REP SCAS 目的串 |
9+15(19)/REP |
1/REP |
1 |
# |
(DI+-1)/(DI+-2) |
LODS 源串 |
12(16) |
1 |
1 |
- |
源串-->AL/AX, |
REP LODS 源串 |
9+13(17)/REP |
1/REP |
1 |
- |
(SI+-1)/(SI+-2) |
STOS 目的串 |
11(15) |
1 |
1 |
- |
AL-->字节串,AX-->字串, |
REP STOS 目的串 |
9+10(14)/REP |
1/REP |
1 |
- |
(DI+-1)/(DI+-2) |
控制传送指令 |
时钟数 |
访问次数 |
字节数 |
对标志位影响 |
指令意义 |
- |
- |
- |
- |
O D I T S Z A P C |
- |
CALL NEAR PROC |
19(23) |
1 |
3 |
- |
下同:直接、间接调用近远过程(或子程序) |
CALL FAR PROC |
28(36) |
2 |
5 |
- |
# |
CALL M16 |
21(29)+EA |
2 |
2-4 |
- |
# |
CALL M32 |
37(57)+EA |
4 |
2-4 |
- |
# |
CALL R16 |
16(24) |
1 |
2 |
- |
# |
JMP 短标号 |
15 |
- |
2 |
- |
下同:无条件转向操作数所指的位置取指令 |
JMP NEAR-标号 |
15 |
- |
3 |
- |
# |
JMP FAR-标号 |
15 |
- |
5 |
- |
# |
JMP M16 |
18+EA |
- |
2-4 |
- |
# |
JMP M32 |
24+EA |
- |
2-4 |
- |
# |
JMP R16 |
11 |
- |
2 |
- |
# |
RET |
20 |
1 |
1 |
- |
下同:过程,子程序返回。段内,无操作数 |
RET |
24 |
1 |
3 |
- |
# |
RET |
32 |
2 |
1 |
- |
# |
RET |
31 |
2 |
3 |
- |
# |
JB/JNAE/JC 短标号 |
16/4 |
- |
2 |
- |
低于/不高于或等于/有进位(借位时),转向标号行指令 |
JAE/JNB/JNC 短标号 |
16/4 |
- |
2 |
- |
高于或等于/不低于/无进位(借位时),转向标号行指令 |
JE/JZ 短标号 |
16/4 |
- |
2 |
- |
等于/结果为 0时,转向标号行指令 |
JNE/JNZ 短标号 |
16/4 |
- |
2 |
- |
不等于/结果不为 0时,转向标号行指令 |
JS 短标号 |
16/4 |
- |
2 |
- |
符号标志 SF 为 1时,转向短标号行指令 |
JNS 短标号 |
16/4 |
- |
2 |
- |
符号标志位 SF 为 0时,转向短标号行指令 |
JP/JPE 短标号 |
16/4 |
- |
2 |
- |
奇偶标志 PF 为 1时,转向标号行指令 |
JNP/JPO 短标号 |
16/4 |
- |
2 |
- |
奇偶标志 PF 为 0时,转向标号行指令 |
JO 短标号 |
16/4 |
- |
2 |
- |
溢出,转向标号行指令 |
JNO |
16/4 |
- |
2 |
- |
不溢出,转向标号行指令 |
JA/JNBE 短标号 |
16/4 |
- |
2 |
- |
高于/不低于时,转向标号行指令 |
JBE/JNA 短标号 |
16/4 |
- |
2 |
- |
低于或等于/不高于时,转向标号行指令 |
JG/JNLE 短标号 |
16/4 |
- |
2 |
- |
大于/不小于或等于时,转移 |
JGE/JNL 短标号 |
16/4 |
- |
2 |
- |
大于或等于/不小于时,转移 |
JL/JNGE 短标号 |
16/4 |
- |
2 |
- |
小于/不大于或等于时,转移 |
JLE/JNG 短标号 |
16/4 |
- |
2 |
- |
小于或等于/不等于时,转移 |
JCXZ 短标号 |
18/6 |
- |
2 |
- |
CX=0时,转向标号所指的指令 |
LOOP 短标号 |
17/5 |
- |
2 |
- |
先 CX-1, 若 CX !=0,则循环至标号所指指令 |
LOOPE/LOOPZ 短标号 |
18/6 |
- |
2 |
- |
先 CX-1,若 CX!=0,且ZF=1,转向标号行指令 |
LOOPNE/LOOPNZ 短标号 |
19/5 |
- |
2 |
- |
先 CX-1,若 CX!=0,且ZF=0,转向标号行指令 |
INT IMM8(中断号=3) |
52(72) |
5 |
1 |
- - 0 0 - - - - - |
FLAG、CS、IP进栈,将相应中断向量的低字 |
INT IMM8(中断号!=3) |
51(71) |
5 |
2 |
# |
送 IP,高字送CS |
INTO |
53(73)/4 |
5 |
1 |
# |
溢出则FLAG、CS、IP进栈,且中断向量低字送 IP,高字送CS,不溢出则顺序执行 |
IRET |
32(44) |
3 |
1 |
X X X X X X X X X |
中断返回,将栈顶连续三个字内容出栈送IP,CS,FLAG |
处理器控制指令 |
时钟数 |
访问次数 |
字节数 |
对标志位影响 |
指令意义 |
- |
- |
- |
- |
O D I T S Z A P C |
- |
CLS |
2 |
- |
1 |
除对指定标志操作外,对其它标志均无影响 |
使标志CF=0 |
CMC |
2 |
- |
1 |
# |
使标志CF取反 |
STC |
2 |
- |
1 |
# |
使CF=1 |
CLD |
2 |
- |
1 |
# |
使标志DF=0 |
STD |
2 |
- |
1 |
# |
使DF=1 |
CLI |
2 |
- |
1 |
# |
使标志IF=0 |
STI |
2 |
- |
1 |
# |
使IF=1 |
HLT |
2 |
- |
1 |
# |
使CPU 暂停,外中断和复位信号可启动 |
ESC IMM,M |
8(12)+EA |
2-4 |
2-4 |
- |
主处理器交权给协处理器 |
ESC IMM,R |
2 |
2 |
2 |
- |
# |
WAIT |
3+5n |
- |
1 |
- |
等待到TEST 变为有效时为止 |
NOP |
3 |
- |
1 |
- |
空操作,只执行IP+1 |
LOCK 任一指令 |
2 |
- |
1 |
- |
作为任一指令的总线封锁前缀 |
REP 串操作指令 |
2 |
- |
1 |
- |
CX!=0 时,无条件重复其后的指令,直至 CX-1=0 |
REPE/REPZ 串操作指令 |
2 |
- |
1 |
- |
ZF=1 且 CX!=0时,重复执行其后指令,直至 CX-1=0 或 ZF=0 |
REPNE/REPNZ 串操作指令 |
- |
- |
- |
- |
ZF=0且CX!=0 时,重复执行其后指令且 CX-1,直至 CX-1=0 或 ZF=1 |