指令和指令系统

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jywlchuang/article/details/90477358

一条指令要由两部分内容组成,其格式为:
操作码 + 操作数地址

第一部分,是指令的操作码。操作码用于指明本条指令的操作功能,例如,是算术加运算、减运算还是逻辑与、或运算功能,是否是读、写内存或读、写外设操作功能,是否是程序转移和子程序调用或返回操作功能等,计算机需要为每条指令分配一个确定的操作码。

第二部分,是指令的操作数地址,用于给出被操作的信息(指令或数据)的地址,包括参加运算的一或多个操作数所在的地址,运算结果的保存地址,程序的转移地址、被调用的子程序的入口地址等。

1.操作码的组织与编码
(1) 定长的操作码的组织方案,当前常用的计算机,一般都在指令字的最高位部分分配固定的若干位(定长)用于表示操作码,例如8位,它有256个编码状态,故最多可以表示256条指令
(2) 变长的操作码的组织方案
(3) 操作码字段与操作数地址有所交叉的方案

2.寻址方式
(1) 立即数寻址
  操作数直接给出在指令字中,即指令字中直接给出不再是操作数地址,而是操作数本身。它的主要用法是把一个确定的数据传送到一个通用的寄存器中。当该数据占用的位数较少时(如小的整数、一个西文字符),第一个指令字的操作数地址字段中存放得下,可把该数据安排在第一个指令字中,则在读出指令的同时也得到相关数据;否则只能将其存放在指令的第二个指令字中,这就构成了双字指令。

(2) 直接寻址
  直接寻址是指在指令的操作数地址字段直接给出操作数在存储器中的地址,这也是计算机中常用的寻址方式之一。与立即数寻址方式类似的是,当该地址占用的位数较少时,第一个指令字的操作数地址字段中存放得下,可把该地址安排在第一个指令字中,则在读出指令的同时也得到相关地址。否则只能将其存放在指令的第二个字中,这就构成了双字指令。
在这里插入图片描述
(3) 寄存器寻址、寄存器间接寻址
  寄存器寻址,在指令字中直接给出操作数所在的通用寄存器的编号(名字、地址),由于通用寄存器数目较少,表示一个通用寄存器编号占用的位数就少,有利于缩短指令字的长度;再考虑到从通用寄存器取数参加运算、用通用寄存器临时保存运算结果都更迅速方便,故这是最基本最常用的寻址方式。
  寄存器间接寻址,在寄存器中给出的不是一个操作数,而是操作数地址时,就可以用这一地址去读写存储器,这种用法被称为寄存器间接寻址,这也是最基本最常用的寻址方式之一。
在这里插入图片描述
(4) 变址寻址
  变址寻址,是指把在指令字中给出的一个数值(称为变址偏移量)与指定的一个寄存器(称为变址寄存器)的内容相加之和作为操作数的地址,用于读写存储器。它特别适合于处理数组型数据;有些计算机,更设置了自动对变址寄存器内容增1和减1的操作功能,在读写完一个数据后,使变址寻址得到的地址自动指向下一个数据。与立即数寻址类似,依据允许的变址偏移量的大小范围,使用变址寻址的指令可能为单字或双字、甚至三字指令。
在这里插入图片描述
(5) 间接寻址
  间接寻址,是指在指令字的地址字段给出的既不是一个操作数的地址,也不是下一条指令的地址,而是一个操作数地址的地址,或一条指令地址的地址。在介绍寄存器寻址时,已经说到寄存器间接寻址,这是间接寻址的一个实例,比较常用。如果是读写存储器操作,则在指令字的地址字段给出的是一个操作数的地址在存储器中的地址,或一条指令的地址在存储器中的地址。此时读写数据需两次访问存储器,速度较慢。若执行多次间接寻址才能得到一条指令或一个数据,系统的运行效率会更低。
  在这里插入图片描述
指令的执行步骤

在这里插入图片描述
在这里插入图片描述
从图上可以看到,组合逻辑控制器是由4个主要部件组成的。

第一个是程序计数器PC,保存一条指令在内存中的地址,服务于读取指令,通常有自行增量功能,并可以接收下条要执行指令的地址。

第二个是指令寄存器IR,保存从内存读来的指令内容,以便提供执行指令的过程中要用到的指令本身的主要信息。

第三个组成成分,是脉冲源、启停控制逻辑,节拍发生器;脉冲源和启停控制逻辑用于向计算机个部件提供连续(单个)的主振脉冲,节拍发生器用于标记出每条指令的各执行步骤的相对次序关系。

第四个组成成分,是时序控制信号的产生部件,它依据指令内容、指令的执行步骤(时刻),也许还有些别的什么条件信号,来形成并提供出计算机各部件当前时刻要用到的控制信号。这是控制器设计中最费力的一个组成成分。

猜你喜欢

转载自blog.csdn.net/jywlchuang/article/details/90477358