本文主要是介绍8086指令小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
所有指令
( 1 )立即数不能作为目的操作数。
( 2 )不能在 2 个存储单元之间直接进行操作(串操作除外)
。
( 3 ) MOV 指令和堆栈指令是惟一能对段寄存器进行操作的指令。
( 4 )源和目的操作数的数据类型必须匹配,都是
8 位,或都是 16 位。
( 5 ) CS 、 IP 不能直接作为操作数。
( 6 )指令中至少要有一项明确说明传送的是字节还是字,
如果没有, 可通过 PTR 进行设置。
一、传送指令
( 1 ) 6 种指令:通用传送指令、堆栈操作指令、交换操作指令、
I/O 操作指令、目的地
址传送指令和标志传送指令。
( 2 )对标志位的影响:除标志传送(
SAHF 、 POPF )外,均不影响标志位。
( 3 )操作数表示方法:立即数——
data ,存储器单元地址——
mem ,
寄存器—— reg , 段寄存器—— segreg 。
1. 通用传送指令:完成数据传送
( 1 )指令格式: MOV
OPRD1 , OPRD2 ; [ 目的操作数 OPRD1] ← [ 源操作数 OPRD2]
( 2 )源 OPRD2 : data 、 mem 、 reg 、 segreg 。
( 3 )目的 OPRD1 : mem 、 reg 、 segreg 。
( 4 )通用传送指令
MOV 和堆栈指令是唯一允许以段寄存器(代码段寄存器
CS 和指
令指针 IP 除外,即 CS 、 IP 不能作为直接操作数)作为操作数的指令,不允许通过
MOV
指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。
( 5 ) 8 位 /16 位操作。
2. 堆栈操作指令:将数据压入
/ 弹出堆栈
( 1 )指令格式:
入栈: PUSH OPRD ; 先修改堆栈指针 SP-2 ,然后将数据压入堆栈。
; SP =SP-1 , [SP]= 操作数高 8 位; SP =SP-1 , [SP]= 操作数低 8 位。
出栈: POP OPRD ; 先将数据弹出堆栈,然后修改堆栈指针
SP+2 。
; (操作数低 8 位)← [SP] , SP =SP+1 ;(操作数高 8 位)← [SP] , SP =SP+1 。
( 2 )操作数: mem 、 reg 、 segreg 。操作数不能是立即数
data 。
( 3 )仅能进行字运算(
16 位操作)。
( 4 )堆栈存取原则为后进先出,只有一个入
/ 出口 SS : SP , SP 始终指向栈顶, SP 是
自动修改的, SP 在初始化中需要设置。
( 5 ) PUSH 、 POP 指令必须成对使用。
3. 交换操作指令: XCHG ——数据交换; XLAT ——完成一个字节的换码转换
( 1 )指令格式:
交换操作指令:
XCHG
OPRD1 , OPRD2 ; [OPRD1] ←→ [OPRD2]
累加器换码指令 (表转换指令、 查表指令): XLAT ; ( AL )← (( DS )× 16 +( BX ) + ( AL ))
( 2 ) XCHG :段寄存器和立即数不能作为一个操作数,
8 位 /16 位操作。
( 3 ) XLAT :表首地址在 BX 中, AL 的内容作为某一项到表首的偏移量(
256 字节的 2
表的下标),转换后的结果存放在
AL 中。
4. I/O 操作指令:累加器(
AX/AL )与 I/O 端口之间的数据传送
( 1 )指令格式:
输入指令: IN AL/ AX , PORT ; ( AL/ AX )← [PORT]
IN
AL/ AX , DX
; ( AL/ AX )← [DX]
输出指令: OUT PORT , AL/ AX
; [PORT] ←( AL/ AX )
OUT
DX , AL/ AX
; [DX] ←( AL/ AX )
( 2 )当端口地址≤
255 时,使用 PORT ( 8 位端口直接地址) ;当端口地址≥ 255 时,
必须用 DX ( 16 位端口直接地址)作桥梁。
DX 作端口寻址最多可寻找
64K 个端口。
( 3 ) PORT 为直接寻址, 8 位 /16 位操作。
5. 目的地址传送指令
( 1 )取有效地址指令:
LEA
OPRD1 , OPRD2
或: LEA
reg , [add] ; ( reg )← add , add 为有效地址
把存储器的有效地址
EA (源操作数的地址偏移量)送入一个寄存器
reg ;常用于
将一个 16 位的通用寄存器作为地址指针。传送的是有效地址
EA 。
( 2 )将双地址指针装入
DS 和另一个寄存器指令
LDS 指令:
LDS
OPRD1 , OPRD2
或: LDS
reg , [add] ;( reg )← ( add+1 )( add ), ( DS )←( add+3 )( add +2 )
( 3 )将双地址指针装入
ES 和另一个寄存器指令
LES 指令:
LES
OPRD1 , OPRD2
或: LES
reg , [add] ; ( reg )←( add+1 )( add ), ( ES )←( add+3 )( add +2 )
① 从源操作数指定的存储单元中取出
4 字节的地址指针 (包括 2 字节的段地址和
2 字节的偏移量)传送到
DS/ES 和 reg 。指定将段地址送入
DS/ES ,偏移量部分送入一
个 16 位的指针寄存器或变址寄存器。
② 源操作数 mem ,目的操作数必须是一个
16 位的通用寄存器。
③ 传送的是存储单元的内容,而不是存储器的有效地址
EA 。
6. 标志传送指令
( 1 )读标志指令: LAHF ; ( AH )← ( FR ) 0 ~ 7
功能: 将标志寄存器中的
SF 、 ZF 、 AF 、 PF 和 CF (即低 8 位)传送至 AH 寄存器的
指定位,空位没有定义。
( 2 )存标志指令: SAHF ; ( FR ) 0 ~ 7 ←( AH )
功能: 将寄存器 AH 的指定位,送至标志寄存器的
SF 、 ZF 、 AF 、 PF 和 CF 位(即低
8 位)。根据 AH 的内容,影响上述标志位,对
OF 、 DF 、 IF 和 TF 无影响。
( 3 )标志入栈指令: PUSHF ; 将 FR 入栈。( SP )←( SP )- 2 ,(( SP ) +1 ,( SP ))←( FR )
功能 :将标志寄存器 FR 压入堆栈顶部,同时修改堆栈指针,不影响标志位。
( 4 )标志弹出栈指令:
POPF ; 将栈顶的内容弹出到 FR 中。
;( FR )←(( SP ) +1 ,( SP )), ( SP )← ( SP ) + 2
功能: 堆栈顶部的一个字,传送到标志寄存器
FR ,同时修改堆栈指针,影响标志位。
二、算术运算指令
( 1 ) 9 种指令:加法指令、减法指令、增量
// 减量指令、求补指令、比较指令、乘法指
令、除法指令、字节字
/ 转换为字扩展指令和十进制调整指令。
( 2 )对标志位的影响: 3
① 加、减、比较指令( CMP )、取补指令( NEG )指令均影响 6 个标志位 CF 、 OF 、
PF 、 SF 、 ZF 和 AF 。
② 乘法指令影响 CF 和 OF 标志;除法指令所有标志位都不确定,无意义。
③ 增量 // 减量指令影响除进位标志
CF 以外的 5 个标志位 AF 、 OF 、 PF 、 SF 和 ZF 。
④ 字节字 / 转换为字扩展指令不影响标志位。
⑤ 加法的 ASCII 调整指令 AAA ,十进制调整指令
DAA 影响除溢出标志
OF 以外 5
个标志: CF 、 PF 、 SF 、 ZF 和 AF ; OF 没有意义。
⑥ 减法的 ASCII 调整指令 AAS 、十进制调整指令
DAS 影响 2 个标志: CF 和 AF ;
其余标志没有意义。
⑦ 乘法的 ASCII 调整指令 AAM 、除法的 ASCII 调整指令 AAD 根据 AL 寄存器的
结果影响 SF 、 ZF 和 PF 。
1 .加法指令
(Addition) :完成加法操作。
( 1 )格式: ADD/ ADC
OPRD1 , OPRD2 ; ( OPRD1 )←( OPRD1 ) + ( OPRD2 )
( 2 )源: data 、 mem 、 reg ;目的: reg , mem 。
( 3 ) ADC 指令主要用于多字节运算中。
( 4 ) 8 位 /16 位操作。
2 .减法指令 (Subtraction) :完成减法操作。
( 1 )格式: SUB/ SBB OPRD1 , OPRD2 ; ( OPRD1 )←( OPRD1 )-( OPRD2 )
( 2 )规定同加法指令。
3. 增量(加 1 ) / 减量(减 1 )指令 INC/ DEC :完成 +1/-1 操作。
( 1 )格式: INC/ DEC
OPRD ; ( OPRD )←( OPRD )± 1
( 2 )功能:主要用于在循环程序中修改地址指针和循环次数等。
( 3 )操作数: reg 、 mem 。
4. 求补指令 NEG :完成补码操作。
( 1 )格式: NEG OPRD
( 2 )操作数: reg 、: mem 。
5. 比较指令 CMP :完成减法操作,结果不回送,反映在标志位上。
( 1 )格式: CMP OPRD1 , OPRD2 ; ( OPRD1 )-( OPRD2 )
( 2 )功能:主要用于比较两个数之间的关系。在比较指令之后,根据标志即可判断两
者之间的关系。减法操作,结果不回送目的操作数。
( 3 )两数关系的判断标志
① A=B 用 ZF=1 判断;
② 两个无符号数的大小用
CF 判断。 CF=1 , A<B ; CF=0 , A>B 。
③ 两个符号数的大小用
SF ⊕ OF 判断。 SF ⊕ OF=1 , A<B ; SF ⊕ OF=0 , A>B 。
JG/JNLE (大于, SF ⊕ OF=0 且 ZF=0 ) JL/JNGE (小于, SF ⊕ OF=1 且 ZF=0 )
6. 乘法指令 MUL/ IMUL :完成无符号乘法 / 带符号(整数)乘法操作。
( 1 )格式: MUL/ IMUL
OPRD ; 8 位:( AX ) ← ( AL )╳( OPRD )
; 16 位:( DX ) ( AX ) ← ( AX )╳( OPRD )
( 2 )源操作数: reg 、 mem ,由指令给出。
( 3 )目的操作数:默认在
AL/AX 中。
( 4 )带符号数乘法指令
IMUL 当结果的高半部分不是结果的低半部分的符号扩展时,
标志位 CF 和 OF 将置位。
( 6 )可完成字节与字节乘法、字与字乘法操作。 4
7. 除法指令 DIV/ IDIV :完成无符号除法 / 带符号(整数)除法操作。
( 1 )格式: DIV/ IDIV
OPRD ; 8 位: (AL) ← (AX)/( OPRD ) ……( AH ) (余数)
; 16 位: (AX) ← (DX) (AX)/( OPRD)
……( DX )(余数)
( 2 )源 / 目的操作数规定同乘法指令。
( 3 )对于符号数,当被除数不够位数时,需要对高
8/16 位进行扩展符号扩展。
8. 字节字 / 转换为字扩展指令
CBW/CWD :将 AL/AX 寄存器的最高位扩展到
AH/DX 。
( 1 )格式: CBW/CWD
( 2 )功能:将 AL/AX 寄存器的最高位扩展到
AH/DX , AL.7 ( AX.15 ) =0 ,则 AH ( DX )
=0 ; AL.7 ( AX.15 ) = 1 ,则 AH=0FFH ( DX=0FFFFH )。
9. 十进制调整指令
( 1 )压缩 BCD 码:每个字节表示两位
BCD 数;
非压缩 BCD 码:用一个字节表示一位
BCD 数,在这字节的高四位用
0 填充。
( 2 )每条十进制调整指令在使用时都与相应的算术运算指令配合,并自动对相应的算
术运算指令结果进行相应的十进制调整。
( 3 )格式:
① DAA :压缩的 BCD 码加法调整
② DAS :压缩的 BCD 码减法调整
③ AAA :非压缩的 BCD 码加法调整
④ AAS :非压缩的 BCD 码减法调整
⑤ AAM :乘法后的 BCD 码调整
⑥ AAD :除法前的 BCD 码调整
三、逻辑运算和移位指令
1. 逻辑运算指令
( 1 ) 5 种指令:逻辑与、或、非、异或和测试指令。
( 2 )指令格式
① 逻辑与指令 AND
OPRD1 , OPRD2 ; ( OPRD1 )←( OPRD1 )∧( OPRD2 )
② 逻辑或指令 OR OPRD1 , OPRD2 ;
( OPRD1 )←( OPRD1 )∨( OPRD2 )
③ 逻辑非指令
NOT
OPRD ;
( OPRD )← ( /OPRD )
④ 逻辑异或指令 XOR OPRD1 , OPRD2 ; ( OPRD1 )←( OPRD1 ) ⊕ ( OPRD2 )
⑤ 测试指令 TEST OPRD1 , OPRD2 ; (OPRD1) ∧ ( OPRD2 ) ,结果不回送。
( 3 )操作数范围
源操作数为 reg 、 mem 、 data ;目的操作数为 reg 、 mem ( NOT 指令只有一个操作数) 。
单操作数指令 NOT 的操作数不能为立即数。双操作数逻辑指令中,必须有一个操作数为寄
存器寻址方式,且目的操作数不能为立即数。
( 4 )功能:实现相应的逻辑功能。
① 与指令可实现屏蔽(复位)数据的某些位(使一个字或字节中的某些位清
0 ,而其
余位不变),提取某些位或拆字。
② 或指令可实现置位数据的某些位
(使一个字或字节中的某些位置
1 ,而其余位不变) ,
拼字。
③ 非指令常用于使某个数取反,或取反后
+1 而得补码。
④ 异或指令可实现某个寄存器清
0 ,或使目的操作数的某些位取反(使一个字或字节
中的某些位取反,而其余位不变)
。
⑤ 测试指令通常用于测试。目的操作数的某些位是
1 还是 0 ,用 ZF 标志判断。 5
( 5 )对标志位的影响
① 逻辑与、或、异或和测试指令影响
ZF , PF , SF 标志; CF=0 , OF=0 ; AF 无意义。
② 逻辑非指令不影响标志位。
2. 移位指令
( 1 ) 4 组 8 种指令:算术移位 SA ,逻辑移位 SH ,循环移位 RO ,带进位位的循环移位
RC 。右移 R ,左移 L 。
( 2 )指令格式:操作码
OPRD , M
M =1 时,只移 1 位; M>1 时,可将指令格式中的
CNT 改为 CL 寄存器,并在移位指
令前将移位次数预先送入
CL 寄存器中。
( 3 )功能:将 OPRD 的内容移位 M 次。算术移位适用于带符号数的×
2 ,÷ 2 。逻辑
移位适用于无符号数的×
2 ,÷ 2 。
( 4 )操作数范围:
reg 、 mem 。
( 5 )对标志位的影响:
① 算术 / 逻辑移位指令影响
CF 、 SF 、 ZF 、 PF 标志,在移 1 位时,影响 OF 标志。不
影响 AF 标志。
② 循环移位指令只影响
CF 、 OF 标志,不影响其他标志位。
MSB
LSB
MSB
LSB
MSB
LSB
CF
CF
CF
0
0
SHL/SAL 算术 / 逻辑左移
SHR 逻辑右移
SAR 算术右移
MSB
LSB
CF
MSB
LSB
CF
MSB
LSB
CF
MSB
LSB
CF
ROL 循环左移
ROR 循环右移
RCL 通过进位的循环左移
RCR 通过进位的循环右移
四、串操作类指令
( 1 ) 5 种指令: 串传送 MOVS ,串比较 CMPS ,串搜索 SCAS ,存串 STOS ,取串 LODS 。
( 2 )指令格式:操作码
DST , SRC
MOVSB (字节) /MOVSW (字)
① 串传送 MOVS DST , SRC ; [(ES : DST)] ← [(DS : SRC )]
MOVSB ;
[(ES : DI)] ← [(DS : SI)] , SI=SI ± 1 , DI=DI ± 1
MOVSW ;
[(ES : DI)] ← [(DS : SI)] , [(ES : DI+1)] ← [(DS : SI+1)] , SI=SI ± 2 , DI=DI ± 2
② 串比较 CMPS DST , SRC ;
[(ES : DI)] - [(DS : SI)] ; SI=SI ± 1 , DI=DI ± 1 6
③ 串搜索 SCAS DST ;
AL ← [(ES : DI)]] ; DI=DI ± 1
④ 存串 STOS DST ;
[(ES : DI)] ← AL ; DI=DI ± 1
⑤ 取串 LODS SRC ;
AL ← [(DS : SI)] ; SI=SI ± 1
字操作与字节操作类似,
AL —— AX 。
( 3 )功能
根据方向标志 DF 及所传送数据的类型
( 字节 / 字 ) 对 SI 及 DI 进行修改, 在指令重复前缀
REP 的控制下实现。
① 串传送: 把数据段中由 SI 间接寻址的一个字节 / 字传送到附加段中由
DI 间接寻址的
一个字节 / 字单元中。
② 串比较: 把数据段中由 SI 间接寻址的一个字节 / 字与附加段中由 DI 间接寻址的一个
字节 / 字进行比较操作,使比较的结果影响标志位。可在两个数据串中寻找第一个不相等的
字节 / 字,或者第一个相等的字节
/ 字。
③ 串搜索:用指令指定的关键字节
/ 字 ( 分别存放在 AL/AX 中 ) ,与附加段中由
DI 间接
寻址的字节串中的一个字节进行比较操作,
使比较的结果影响标志位。
可在指定的数据串中
搜索第一个与关键字节匹配(或者不匹配)的字节。
④ 存串:把指令中指定的字节
( 或字 ) 串 ( 存放在 AL/AX 中 ) 传送到附加段中由
DI 间接
寻址的字节内存单元中。可连续将
AL (或 AX )的内容存入到附加段中的一段内存区域中
去,该指令不影标志位。
⑤ 取串:从串中取指令实现从指定的字节
( 或字 ) 串中读出信息的操作。
( 4 )规定
① 串操作类指令是唯一的一组源和目的操作数均在存储单元的指令。
源串在数据段,
目的串在附加段。各指令所使用的默认寄存器是:源串地址
DS : SI ;目的串地址 ES : DI ;
字串长度 CX ;存取或搜索的默认值
AL
② 串操作时,地址的修改由方向标志确定。
CLD ; DF=0 , SI/DI 地址作自动增量(自动
+1 )修改;
STD ; DF=1 , SI/DI 地址作自动减量(自动-
1 )修改。
③ 任何一个串操作指令均可在指令前面加上一个重复操作作为前缀,
于是就重复执行,
直至 CX 、 ZF 满足要求为止。
④ 重复指令前缀
REP ; ①若 (CX) = 0 ,则退出; ② CX=CX-1 ;③执行后续指令;④重复①
---- ③
REPE/REPZ ; ①若 (CX) = 0 或 ZF=0 ,则退出;② CX=CX-1 ;③执行后续指令;④重复①
---- ③
REPNE/REPNZ ; ①若 (CX) = 0 或 ZF=1 ,则退出;② CX=CX-1 ;③执行后续指令;④重复①
---- ③
五、控制转移类指令
( 1 ) 6 种指令:无条件转移指令、子程序调用和返回指令、条件转移指令、循环控制
指令、中断指令、处理器控制命令。
( 2 )概念
①直接转移:转移的目的地址(标号)直接出现在指令码中。
②间接转移:转移的目的地址间接存储于某一个寄存器或某一个内存变量中。
③段内转移 / 调用:转移的目的地址和本条指令在同一代码段中,转移时只改变
IP ,不
改变 CS 。程序转向的有效地址
EA 等于当前 IP 的内容加上 8/16 位位移量。可分为:
段内近转移 NEAR —— 16 位位移量,适用于无条件转移指令和条件转移指令,转移范
围为 -32768 ---- +32768 。
段内短转移 SHORT —— 8 位位移量, 适用于条件转移指令, 转移范围为 -128 ---- +127 。 7
④段间转移 / 调用(远转移 FAR ):转移的目的地址和本条指令不在同一代码段中,
转移
时同时改变 CS 和 IP 内容,即程序转移到另一个代码段。
1. 无条件转移指令
JMP
[ 转移方式 ]OPRD ;转移到 OPRD 所指向的存储器单元处执行程序
( 1 )段内直接短转移指令
JMP SHORT
OPRD ; (IP) ← (IP)+ OPRD
( 2 )段内直接近转移指令
JMP
NEAR
PTR
OPRD ; (IP) ← (IP)+ OPRD
( 3 )段内间接转移指令
JMP WORD
PTR
OPRD ; ( IP )← [EA]
( 4 )段间直接(远)转移指令
JMP FAR PTR
OPRD ; ( IP )← OPRD 的段内偏移地址,
( CS )← OPRD 所在的段地址。 OPRD 为直接寻址方式。
( 5 )段间间接转移指令
JMP DWORD
PTR OPRD ; ( IP )← [EA] ,( CS )← [EA+2]
2. 条件转移指令
指令助记符
目的地址
( 1 )标志条件转移指令助记符:
J/JN+ 标志( C, P, S, S, O );
( 2 )比较条件转移指令助记符:
J/JN+ 比较符 ( A 高于 , B 低于 , E 等于 , G 大于 , L 小于)
( 3 )无符号数比较:测试标志位为
CF 、 ZF ,分高于 A 、等于 E 、低于 B 等 3 种情况:
ZF=1 ,等于; CF=0 ,大于。
( 4 )符号数比较:测试标志位为
ZF 、 OF 和 SF ,分大于 G 、等于 E 、小于 L 等 3 种情
况: ZF=1 ,等于; SF ⊕ OF =0 ,大于。
3. 子程序调用和返回指令
( 1 )子程序(过程)调用指令
CALL
子程序名 DST
①段内调用: CALL NEAR PTR OPRD ;( SP )←( SP ) -2 ,(( SP ) -2 )(( SP ) -1 ) ← ( IP ),
( IP )←子程序 DST 的地址( 即: IP+16 位位移)
②段间调用: CALL FAR PTR OPRD ;( SP )←( SP ) -2 ,(( SP ) -2 )(( SP ) -1 ) = ( CS ),
( SP )←( SP ) -2 ,(( SP ) -2 )(( SP ) -1 ) = ( IP ),
( IP ) =[EA] ,( CS ) =[EA+2]
( 2 )子程序返回指令
RET ; 段内返回( IP ) ← (( SP ) +1 , SP ),( SP ) ← ( SP ) + 2
; 段间返回( IP ) ← (( SP ) +1 , SP ),( SP ) ← ( SP ) + 2
( CS ) ← (( SP ) +1 , SP ),( SP ) ←
( SP ) + 2
4. 循环控制指令
对 CX 或标志位 ZF 进行测试,确定是否循环。
( 1 ) LOOP OPRD (短标号); (CX) ← (CX) - 1 ,若 CX ≠ 0 ,则循环,否则顺序执行。
( 2 ) LOOPNZ/LOOPNE OPRD ; (CX) ← (CX) - 1 ,若 CX ≠ 0 和 ZF=0 ,则循环,否则顺序执行。
( 3 ) LOOPZ/LOOPE
OPRD ; (CX) ← (CX) - 1 ,若 CX ≠ 0 和 ZF=1 ,则循环,否则顺序执行。
( 4 ) JCXZ OPRD ; (CX) ← (CX) - 1 ,若 CX=0 ,则循环,否则顺序执行。
5. 中断指令
( 1 ) INT n ;( SP )←( SP )- 2 ,(( SP ) -2 )(( SP ) -1 )←( FR ), FR 入栈
;( SP )←( SP )- 2 ,(( SP ) -2 )(( SP ) -1 )←( CS ), CS 入栈
;( SP )←( SP )- 2 ,(( SP ) -2 ) (( SP ) -1 )←( IP ), IP 入栈
;( IP )←( n × 4 ), ( CS )←( n × 4+2 ), n ——中断类型号
( 2 ) INTO ;同 INT 4 ,算术运算溢出中断指令
( 3 )中断返回指令
IRET ; (IP) ← ((SP)+1 ,(SP)), (SP) ← (SP)+2 , IP 出栈
; (CS) ← ((SP)+1 ,(SP)), (SP) ← (SP)+2 , CS 出栈 8
; (FR) ← ((SP)+1 ,(SP)), (SP) ← (SP)+2 , FR 出栈
6. 处理器控制命令
( 1 )标志操作指令
清标志位为 CL ,置标志位为 ST 。只对 CF 、 DF 和 IF 三个标志操作
CLC ——清进位标志, CLD ——清方向标志, CLI ——关中断标志;
STC ——置进位标志,
STD ——置方向标志, STI ——开中断标志;
CMC ——进位标志取反。
( 2 )处理器外部同步命令
对标志位的影响:不影响标志位
。
①暂停指令: HLT ; 处理器处于什么也不做的暂停状态,可由中断请求、复位等唤醒继续执行。
②等待指令: WAIT ; 处理器处于等待状态, CPU 每隔 4 个时钟周期测试一次
TEST 引脚线( 23
脚),直至 TEST 引脚线为有效低电平时,
CPU 才脱离等待状态。
③交权指令: ESC ; CPU 将控制权交给其他协处理器,使协处理器从系统指令流中取得指令。
④总线封锁指令: LOCK ; 可放在任一条指令前作为前缀,使
CPU 在执行下一条指令期间发出
总线封锁信号( LOCK ),将总线封锁,其它的主设备不能控制总线。
⑤空操作指令: NOP ; 不完成任何操作,只耗费
3 个时钟周期,用于程序的延时和调试。
这篇关于8086指令小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!