DJ12-1 8086系列指令系统-1
创始人
2024-02-06 15:01:01
0

指令:能够被计算机识别并执行的二进制代码。

指令系统:所有指令的集合。

指令按功能分类:数据传送类、算术运算类、逻辑运算和移位、串操作、控制转移类、处理器控制。

 

一、8086 指令格式

1. 指令的一般格式

在《计组》里面,我们有对目的地址和目的操作数进行严格区分,但在《微机接口》里面我们统称为目的操作数。

8086 指令的长度在 1~7 字节之间,操作码为 1~2 字节,指令的长度决定于操作数的个数以及所采用的寻址方式。(可见,8086 使用的是 CISC 复杂指令集。)

按操作数数量分类:

  • 零操作数指令
  • 单操作数指令
  • 双操作数指令

 

2. 操作数类型

① 立即数操作数

(关键)立即数是运算数据本身,无地址含义,故无法作目的操作数。由于立即数无法作目的操作数,所以不能用于单操作数指令。

② 寄存器操作数

③ 存储器操作数

存储器操作数的表现形式:[ 内存偏移地址 ]

二、8086 寻址方式

寻址方式:是指获得操作数所在的地址的方法。 

寻址方式分类:

  • 寻找操作数的地址;
  • 寻找要执行的下一条指令的地址,即程序的地址。

后者主要在程序转移或过程调用时用来寻找目标地址或入口地址,这将在调用指令(CALL)或程序转移指令(JMP)中介绍。

 

1. 立即寻址

仅适用于源操作数。

例、MOV  AX,1200H

 

2. 直接寻址

与《计组》中不同,这里只指存储器直接寻址。

指令中直接给出操作数的 偏移地址,默认在 DS 数据段。

允许段重设,即可以通过增加段前缀以实现段超越。比如:ES:[1200H] 。

例、MOV  AX,[1200H] 等价于 MOV  AX,DS:[1200H]

 

3. 寄存器寻址

参加操作的操作数在 CPU 的寄存器中。

例、MOV  AX,BX

 

4. 寄存器间接寻址

特点:

① 寄存器的内容表示操作数的偏移地址。

② 允许的寄存器为 BX、BP、SI、DI,又称为间址寄存器或地址指针

(考点)判断指令的书写正误。

③ 操作数的段地址取决于间址寄存器,允许段重设。

非串操作的情况下:

  • BX、SI、DI:默认为 DS 数据段;
  • BP:默认为 SS 堆栈段。

④ 因为寄存器的内容表示操作数的偏移地址,所以指令中的间址寄存器必须加上方括号。

例、MOV  BX,1200H;MOV  AX,[BX]

 

5. 寄存器相对寻址

① 操作数在内存中的偏移地址由 间址寄存器 的内容加上指令中给出的一个 8 位或 16 位的位移量组成,即 偏移量 = 寄存器内容 + 位移量。

间址寄存器:BX、BP、SI、DI 。

② 操作数所在的段由所使用的间址寄存器决定。

例、指令MOV  AX,Disp[BX]

        假设 DS=6000H,BX=1000H,Disp=08H

        则偏移地址为 BX+Disp=1008H

        操作数物理地址为 61008H

③ 可以使用的寄存器为:BX、BP、SI、DI 。

(记忆)格式可以为:

  • MOV  AX,[BX+Disp]

  • MOV  AX,Disp[BX]

  • MOV  AX,[BX]+Disp

  • MOV  AX,Disp+[BX]

在 CPU 执行指令之前,会需要编译器对指令进行编译。

每一种寻址方式都对应有唯一的编码。

虽然编译器不认识 [BX]+Disp 和 Disp+[BX] 这两种形式,但它会进行语法分析,将其与寄存器相对寻址方式匹配。随后转换为对应的二进制代码,交由 CPU 执行。

 

6. 基址变址寻址

① 操作数的偏移地址 = 一个基址寄存器的内容 + 一个变址寄存器的内容。

② 操作数的段地址由选择的 基址寄存器 决定,允许段重设。

  • 若基址寄存器为 BX,则默认在 DS 数据段;
  • 若基址寄存器为 BP,则默认在 SS 堆栈段。

MOV  AX,[BX][SI] (√)

MOV  AX,[BP][SI] (√)

MOV  AX,[BX]+[SI] (√)

MOV  AX,[BX+SI] (√)

MOV  AX,[BX][BP] (×)

例、MOV  SI,1100H;MOV  BX,SI;MOV AX,[SI+BX]

 

7. 基址-变址-相对寻址

① 操作数的偏移地址 = 基址寄存器的内容 + 变址寄存器的内容 + 位移量。

② 操作数的段地址由选择的 基址寄存器 决定,允许段重设。

(重点)指令中不能同时出现两个基址寄存器或两个变址寄存器。

 

8. 隐含寻址

有些指令的操作码不仅包含了操作的性质,同时还隐含规定了部分操作数。

例、乘法操作(8位 × 8位 → 16位)

这条指令隐含规定了被乘数在 AL 中,同时乘积的结果存放在 AX 中。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...