指令的格式

操作码字段 + 地址码字段,左边为高位,右边为低位

操作码OP

表示指令对应的操作。操作码字段的长度取决于计算机指令系统的规模。如某指令系统有8条(种)指令,操作码只需3位即可。指令字中的操作码长度可以使固定的也可以是变长的.

  • 等长:指令规整,译码简单,固定长度编码的主要缺点是:信息的冗余极大,使程序的总长度增加。

  • 变长:指令不规整,译码复杂,效率高

地址码AD

根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。

通常指令可以根据操作数地址数量划分为:

  • 三地址指令

  • 二地址指令

  • 一地址指令

  • 零地址指令

零地址指令:只有操作码,没有地址码 | 如停机、空操作、开关中断等

一地址指令:称为单操作数指令,指令中只有一个操作数或者是指令默认以运算器中累加寄存器AC中的数为一个操作数,类似于高级语言函数中的默认参数。符号表达为(AC) OP (A) -> AC,其中OP表示操作,AC和A表示地址。AC为累加寄存器地址。地址加括号表示取地址中的数据,类似于C语言中对指针的解引用

二地址指令:称为双操作数指令。两个地址码表明两个操作数的地址,结果存放在其中一个地址处。符号表达为(A1) OP (A2) -> A1

三地址指令:指令字中有三个操作数地址。符号表达为(A1) OP (A2) -> A3。A1为被操作数地址源操作数地址。A2为操作数地址终点操作数地址。A3为存放结果的地址

操作数地址可以是存储器地址, 也可以是寄存器地址:

  • 存储器-存储器(SS)型指令

    • 参与操作的数都在内存里需多次访存.

  • 寄存器-寄存器(RR)型指令

    • 操作数都在寄存器中从寄存器取操作数,结果也存放在寄存器。速度很,不需要访存,但需要多个寄存器

  • 寄存器-存储器(RS)型指令. 既要访问存储器又要访问寄存器的指令

指令字长度

即指令字中比特的个数

回忆-机器字长:计算机能处理的二进制数据的位数, 决定了计算机的运算精度。

机器字长通常和寄存器的位数一致

指令分类:

  • 单字长指令 (指令字长等于机器

  • 半字长指令 (指令字长等于半个机器

  • 双字长指令

使用多字长指令,地址的位数更多,能够提供更大的地址空间,但是CPU必须两次或多次访问内存才能取出一条指令,降低了CPU的运算速度

定长操作码与扩展操作码 (不定长操作码)

定长操作码指令格式:

显而易见的缺点:地址长度不统一(实际计算机中地址长度是统一的),存在没有被使用的位,浪费空间

所以诞生了变长操作码/扩展操作码

Ex.

指令助记符

典型的指令助记符

典型指令
助记符

加法

ADD

减法

SUB

传送

MOV

跳转

JMP

转子

JSR

存储

STR

读取

LDA

操作数类型

地址数据: 地址实际上也是一种形式的数据。(无符号) 数值数据: 计算机中普遍使用的三种类型(定点、浮点和十进制数)的数值数据。 字符数据: 文本数据或字符串,目前广泛使用ASCII码。 逻辑数据: 一个单元中有多位二进制bit项组成,每个bit的值可以是1或0。当数据以这种方式看待时,称为逻辑性数据。

ASSIGNMENT

指令格式如下所示,其中OP为操作码,试分析指令格式的特点。

① 单字长二地址指令。

② 操作码字段OP可以指定27=128条指令。

③ RR型指令

④ 常用于算术逻辑运算类指令。

双字长二地址指令。

② 操作码字段OP可以指定26=64条指令。

③ RS型指令。(变址寄存器和位移量用于查找主存中的地址

④ 用于访问存储器。

Last updated

Was this helpful?