组成原理(六):指令系统之 指令类型

  指令类型分为数据传送类指令、运算类指令、程序控制类指令、输入输出指令。

1、数据传送类指令

  数据传送类指令具有数据复制的性质,即数据从源地址传送到目的地址,而源地址中的内容保持不变。

1.1、一般传送指令

  一般传送类指令常用助记符MOV表示,根据传送的源和目的不同,又可分为以下几种传递方式:主存单元之间的传送、从主存单元传送到寄存器、从寄存器传送到主存单元、寄存器之间的传送。

1.2、堆栈操作指令

  堆栈操作指令分为 进栈(PUSH) 和 出栈(POP)。

1.3、数据交换指令

  数据传送可以是双向的,源操作数与目的操作数(一个字节或一个字)相互交换位置。

2、运算类指令

2.1、算术运算类指令

  算术运算指令主要用于定点和浮点运算。这类运算包括加、减、乘、除、比较等。

  算术运算指令标志位:进位、溢出、正负和奇偶。

  指令系统中出去普通的加、减指令外,一般都设置了带进位加和带借位减指令。

2.2、逻辑运算类指令

  逻辑运算类指令是对 与、或、非和异或等逻辑运算的指令,

2.3、移位类指令

  移位指令分为算术移位、逻辑移位和循环移位,又可分为左移和右移。

算术移位

带符号数,移位过程中操作数符号不变

 

逻辑移位

对象是无符号数,移位无须考虑符号问题

 

循环移位

是否与进位位一起循环,分为小循环(不带进位自环)、大循环(带进位循环)

小循环:

大循环:

3、程序控制类指令

  程序控制类指令用于控制程序的执行顺序,并使程序具有测试、分析与判断的能力。主要包括转移指令、子程序调用和返回指令。

3.1、转移指令

  程序执行过程中,采用转移指令改变程序的执行顺序。转移指令分为 无条件转移 和 条件转移 两种。

  无条件转移,又称必转,执行时改变程序的常规执行顺序,不受任何条件约束,助记符为JMP。

  条件转移必须受到条件的约束,若满足指令规定的条件,则程序转移;否则,程序仍顺序执行。

  条件转移采用相对寻址方式,转移地址为当前指令地址(PC)和指令中的位移量之和,PC + 位移量 → PC。

3.2、子程序调用指令

  子程序是一组可以公用的指令序列。

  调用其他程序的程序是主程序,被其他程序调用的程序是子程序。

  子程序调用指令,从主程序转向子程序的指令,简称转子指令,助记符CALL。

  转子指令是地址指令。

转移指令与转子指令的区别:

转移指令

转子指令

使程序转移到新的地址后继续执行指令,没有返回地址

必须以某种方式保存返回地址,以便返回时能找到原来的位置

实现同一程序内的转移

实现不同程序之间的转移

  转子指令中的返回地址是下一条指令的地址,保存返回地址的方式:

  用子程序的第一个子单元存放;

  用寄存器存放;

  用堆栈保存返回地址。

3.3、返回指令

  从子程序转向主程序的指令称为返回指令,助记符为RET。子程序的而最后一条指令一定是返回指令。

  通常返回地址保存在堆栈中,所以返回指令常是零地址指令。

4、输入输出指令

  输入输出(I/O)类指令用来实现主机与外部设备之间的信息交换,包括输入输出数据、主机向外设发控制命令或外设向主机报告工作状态等。

  I/O指令的编址方式:独立编址 和 统一编址。

4.1、独立编址的I/O指令

  独立编址方式使用专门的输入输出指令(IN/OUT)。以主机为基准,信息由外设传送给主机,称为输入,反之称为输出。

  指令中应给出外部设备编号(端口地址),此端口地址与主存地址无关,是另一个独立的地址空间。

4.2、统一编址的I/O指令

  把外设寄存器和主存单元同一编址。用一般的数据传送类指令来实现I/O操作。

  一个外部设备至少有两个寄存器;数据寄存器 及 命令与状态寄存器。

  每个外设寄存器都可由分配给它们的唯一的主存地址来识别。

4.3、编址方式比较

优缺点

独立编址方式

统一编址方式

优点

I/O指令和访存指令容易区分,外设地址线少,译码简单,主存空间不会减少

总线结构简单,全部访存类指令都可用于控制外设,可直接对外设寄存器进行各种运算

缺点

控制线增加了I/O Read 和 I/O Write信号 

占用主存一部分地址,缩小了可用的主存空间

 

posted @ 2023-09-11 10:39  无虑的小猪  阅读(1209)  评论(0编辑  收藏  举报