组成原理(三):指令系统之 指令格式

 指令是指示计算机执行某些操作的命令,计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是计算机的主要属性,位于硬件和软件的交界面上。

1、机器指令的基本格式

  一条指令就是机器语言的一个语句,是一组有意义的二进制代码,指令的基本格式如下:

  

   操作码,指明了该指令的操作性质和功能;

  地址码,给出了操作数的地址。

  指令的长度是一条指令中所包含的二进制代码的位数,取决于操作码字段的长度、操作数地址的个数及长度。

  指令长度等于机器字长的指令,称为单字长指令;指令长度等于半个机器字长的指令,称为半字长指令;指令长度等于两个机器字长的指令,称为双字长指令。

2、地址码结构

  计算机执行一条指令所需要的全部信息都必须包含在指令中。

  对于一般的双操作数运算类指令来说,除去操作码之外,指令还要包含以下信息:操作数地址、操作结果存放地址、下一条将要执行指令的地址。

  在指令中明显给出的地址,称为显地址;隐含方式给出的地址,称为隐地址

2.1、四地址指令

  指令格式如下:

 

指令的含义:

  (A1)OP(A2)→ A3,OP表示具体的操作,A1、A2表示地址,(A1)、(A2)表示存放于该地址中的内容。

  A4 → 下一条将要执行的指令的地址。

  四地址指令,直观,并且下一条指令的地址明显。但是,指令的长度太长。

2.2、三地址指令

  程序计数器(Program Counter,PC)来存放指令地址。通常每执行一条指令,PC就自动加1,直接得到将要执行的下一条指令的地址,如此,指令中无需明显的给出下一条指令的地址。

  引入PC,三地址格式指令:

  

指令的含义:

  (A1)OP(A2)→ A3,OP表示具体的操作,A1、A2表示地址,(A1)、(A2)表示存放于该地址中的内容。

  (PC) + 1 → PC(隐含)

  执行一条三地址的双操作数运算指令,至少访问4次主存,第一次取指令,第二次取第一个操作数,第三次取第二个操作数,第四次保存运算结果。

2.3、二地址指令

  二地址指令,指令执行后,目的操作数原存的内容已被破坏。指令格式如下:

  

指令的含义:

  (A1)OP(A2)→ A1,OP表示具体的操作,A1是目的操作数地址,A2是源操作数地址。

  (PC) + 1 → PC(隐含)

  二地址指令,也需要至少访问4次主存。

2.4、一地址指令

  一地址指令,只有一个显地址,另一个隐含的操作数存放在累加寄存器中(Accumulator, ACC)。引入Acc,指令格式:

  

指令含义:

  (Acc)OP(A2)→ Acc

  (PC) + 1 → PC(隐含)

  执行一条一地址指令的双操作数运算指令,只需要访问两次主存。第一次取指令本身,第二次取操作数。第一操作数和运算结果放在累加寄存器中,因此,读取和存入不需访问主存。

2.5、零地址指令

  零地址指令格式中,只有操作码,没有地址码字段,指令格式如下:

 

  零地址的算术逻辑类指令是在堆栈计算机中,堆栈计算机没有一般计算机中必备的通用寄存器,参加算术逻辑原酸的两个操作数隐含的从堆栈顶部弹出,送到运算器中进行原酸,运算的结果再隐含的压入堆栈。

2.6、地址指令比较

0

3、指令的操作码

  指令系统中每一条指令都有一个唯一确定的操作码,指令不同,操作码的编码也不同。

  操作码的编码分为 规整型 和 非规整型 两类编码。

3.1、规整性编码 - 定长编码

  操作码的字段和位置是固定的,无论指令长度是多少位,操作码字段都是一样的。

  指令格式如下:

0

3.2、非规整性编码 - 变长编码

  变长编码的操作码字段的位数不固定,且分散的存放在指令字的不同位置上。

  这种方式能有效的压缩指令中操作码字段的平均长度。适用于字长较短的小型、微型计算机。

指令格式如下:

0

  最常用的非规整型编码方式是拓展操作码法。

  若指令长度一定,地址码和操作码字段长度互相制约,为解决此锚段,让操作数地址个数多的指令操作码短些,操作数地址少的指令操作码长。如此既能充分利用指令的各个字段,又能在不增加指令长度的情况下拓展操作码的位数,使它能表示更多的指令。

 

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