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 |