4.1 指令格式
思维导图
基本概念
指令:
- 是指示计算机执行某种操作的命令,计算机运行的最小功能单位
- 一条指令通常包括操作码字段和地址码字段两部分
指令系统(指令集):
- 一台计算机的所有指令的集合
- 指令系统是计算机的主要属性,位于硬件和软件的交界面上
指令的基本格式
指令
-
一条指令通常包括操作码字段和地址码字段两部分
-
操作码:指出指令中指令应该执行什么性质的操作和具有何种功能。
操作码是识别指令、了解指令功能及区分操作数地址内容的组成和使用方法的关键信息。 -
地址码:给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的
-
指令长度:
- 是指一条指令中所包含的二进制代码的位数
- 指令的长度取决于操作码的长度、操作数地址码的长度和操作数地址的个数,与机器字长没有固定的关系。
-
分类:(机器字长比较)
- 单字长指令
- 半字长指令
- 双字长指令
-
两种结构:
-
定长指令结构
- 一个指令系统中,所有的指令的长度都是相等的
- 特点:执行速度快,控制简单
-
变长指令结构
- 各指令长度随指令功能而异
-
零地址指令
-
只给出操作码OP,没有显式地址。
-
可能:
- 不需要操作数的指令,如空操作指令、停机指令、关中断指令等
- 零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。
一地址指令
-
两种形式,要根据操作码的含义确定为哪一种
-
两种形式
- 只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址。
指令含义:OP(A1)→A1如操作码含义是加1、减1、求反、求补等。 - 隐含约定目的地址的双操作数指令,按指令地址A1可读取源操作数,指令可隐含约定另个操作数由AC(累加器)提供,运算结果也将存放在ACC中。
指令含义:( ACC)OP(A1)→ACC
若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为2^24=16M
- 只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址。
二地址指令
- 指令含义:(A1)OP(A2)→A1
对于常用的算术和逻辑运算指令,往往要求使用两个操作数,需分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果
三地址指令
- 指令含义:(A1)OP(A2)→A3
A3用來存放結果
四地址指令
- 指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址。
定长操作码指令格式
- 定长操作码指令在指令字的最高位部分分配固定的若干位(定长)表示操作码
- 定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利。
扩展操作码指令格式
-
目的:为了在指令字长有限的前提下仍保持比较丰富的指令种类,采取可变长度操作码
-
特性:增加指令译码和分析的难度,使控制器的设计复杂化
-
最常见的变长操作码方法是扩展操作码,它使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
在设计扩展操作码指令格式时:需要注意:
-
- 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
-
- 各指令的操作码一定不能重复