指令的类型

目录

1. 传送类指令

2. 输入/输出(I/O)类指令

3. 算术逻辑运算类指令

4. 程序控制类指令


  • 传送类指令
  • 输入/输出(I/O)类指令
  • 算术逻辑运算类指令
  • 程序控制类指令

1. 传送类指令

将源地址里保存的数据传送到目的地址中保存,传送类指令一般常用助记符 MOV 表示。

用户在编程中能够指定的源端和目的端:

指令的类型_第1张图片

2. 输入/输出(I/O)类指令

主机与外设之间交换信息:

指令的类型_第2张图片

输入/输出(I/O)类指令实现主机和各外围设备之间的信息传输,输入和输出都以主机为参考点。

  • 将信息送入主机,称为输入
  • 将信息送至外围设备,称为输出

外围设备通过I/O接口与系统总线连接,数据的发送/接收者是I/O接口中的寄存器,主机对外围设备的访问就是对有关接口寄存器的访问。

外围设备一般受CPU控制,因此CPU需要通过输出指令向I/O接口送出命令信息,再由接口产生相应的命令发送给外围设备。

  • 控制寄存器:主机用输出指令或传送指令,将具体设备的控制命令按约定的代码格式送往接口中的控制寄存器,向外设发出命令。
  • 状态寄存器:外设的状态信息以某种格式放在接口的状态寄存器中,主机用输入指令或传送指令从状态寄存器中取出有关信息进行查询、分析,以确定主机下一步的工作。
  • 数据寄存器:主机与外设之间传输的数据存放于数据寄存器。 

主机如何与外设连接?

指令的类型_第3张图片

 先给出端口地址(你要用哪些寄存器),再给出控制信号(你是要读还是要写)。

得到端口地址后,我们通过 译码器 来选择相应的寄存器:

指令的类型_第4张图片

译码器的输出端与一个三态门相连,成为寄存器的控制端。当且仅当控制端有效时,数据才能存入寄存器中。比如 A = 0,B = 0,C = 1,那么数据将写入第二个寄存器中。


I/O设备的编址方法:

(1)单独编址

早期方法是为每台设备分配一个设备码,I/O指令中指明设备码和寄存器;常用方法是为每个寄存器(I/O端口)分配独立的端口地址,I/O指令中给出端口地址。例如,存储空间容量为64K:

  • 主存编址:0000H ~ FFFFH
  • 端口编址:FF00H ~ FFFFH

单独编址的特点:

  • 端口地址的数量远少于存储单元地址的数量
  • I/O地址空间不占主存空间
  • I/O地址可与主存地址重叠

指令的类型_第5张图片

计算机不能根据地址码本身区分存储单元和I/O端口,即I/O接口寄存器。

在处理器的指令集中,需要有专门的I/O指令(非数据传送指令)来完成端口的读写操作,又称为 显式I/O指令。例如:

指令的类型_第6张图片

处理器通过对操作码 INOUT 的译码来判断出是I/O指令。对于主存,我们使用操作码 MOV 来完成输入/输出操作。

指令的类型_第7张图片

指令的类型_第8张图片

(2)统一编址 

I/O端口地址占CPU提供的全部地址空间的其中一部分。比如,可将地址空间的低端部分分配给主存单元,高端部分分配给I/O端口,以示区分。

采用统一编址,计算机可根据地址码本身区分是存储单元地址还是I/O端口地址,无需其它控制,对存储单元或I/O端口的读写不会发生混乱。

统一编址时,将设备接口中的寄存器视为一个存储单元,采用 通用的数据传送指令 实现I/O操作,又称为 隐式I/O指令

在指令集中,无需专门的输入/输出指令,采用一般数据传送指令即可进行端口的读写操作:

指令的类型_第9张图片

处理器无需专门的信号来区分是访问存储器还是访问I/O端口,译码电路对地址码的译码即可区分出是读写存储器单元还是读写I/O端口。 

3. 算术逻辑运算类指令

(1)算术运算指令

加(ADD)、减(SUB)、乘(MUL)、除(DIV)、求补(NEG)、加1(INC)、减1(DEC)、…

(2)逻辑运算指令

与(AND)、或(OR)、非(COM)、异或(EOR)、…

实现对代码位的设置、测试、清除、修改等。

运算结束后大部分会自动设置相应状态标志。 

4. 程序控制类指令

(1)转移指令

  • 无条件转移:操作码  转移地址
  • 条件转移:操作码  转移地址  转移条件

(2)转子指令与返回指令

  • 转子指令:操作码  子程序入口
  • 返回指令:操作码

子程序就是我们常说的函数,每个子程序的最后一条指令都是返回指令。以C语言为例,对于有返回值的函数,我们会在最后写上 return ... 进行返回;对于没有返回值的函数,在最后也会隐藏一条 return ; 进行返回。

用堆栈存放返回地址:

指令的类型_第10张图片

在高级语言中,函数名就是子程序的入口地址,我们假设这里的Add是一个函数名。取完Add指令,PC + n,PC指向下一条指令,再把PC压入堆栈中。在Add执行结束后,再把PC弹出来。

(3)软中断指令

指令的类型_第11张图片

早期主要用于程序调试,现在常用于系统功能调用。 

和转子指令与返回指令的区别:软中断指令具有随机性,比如我们可以随机设置程序断点。

(4)控制指令 

  •  CLC 清除进位标志
  •  NOP 空操作指令
  •  HLT 暂停指令
  • ...


CPU内部结构:  

指令的类型_第12张图片

你可能感兴趣的:(计算机系统结构,单片机,嵌入式硬件)