4.1 指令格式与扩展操作码

指令的基本格式,零地址到三地址指令,定长与变长指令字,定长操作码与扩展操作码的设计。

考查要求 ★★★ 重点掌握 地址码个数访存次数定长与扩展操作码指令字长

指令的基本格式

指令(机器指令)是指示计算机执行某种操作的命令。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是指令集体系结构(ISA)中最核心的部分。

一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。一条指令通常要包括操作码字段和地址码字段两部分:

操作码 OP地址码 A(操作数、结果的地址)
  • 操作码指出指令应该执行什么性质的操作和具有何种功能,是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息;
  • 地址码给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。

指令字长是指一条指令中所包含的二进制代码的位数,取决于操作码的长度、操作数地址码的长度和操作数地址的个数。指令字长等于机器字长的称为单字长指令,等于半个机器字长的称为半字长指令,等于两个机器字长的称为双字长指令。在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构;若各种指令的长度随指令功能而异,则称为变长指令字结构。

按地址码个数分类

类型格式功能访存次数(含取指,地址均为主存地址)
零地址OP不需要操作数(空操作、停机、关中断);或用于堆栈计算机,操作数隐含在栈顶1 次(仅取指)
一地址OP A₁① 单操作数:OP(A1)→A1\text{OP}(A_1) \to A_1(加 1、取反);② 隐含另一个操作数在 ACC 中:(ACC) OP (A1)→ACC(\text{ACC})\ \text{OP}\ (A_1) \to \text{ACC}3 次(取指、读、写);隐含 ACC 时 2 次
二地址OP A₁ A₂(A1) OP (A2)→A1(A_1)\ \text{OP}\ (A_2) \to A_14 次(取指、读 A₁、读 A₂、写 A₁)
三地址OP A₁ A₂ A₃(A1) OP (A2)→A3(A_1)\ \text{OP}\ (A_2) \to A_34 次(取指、读 A₁、读 A₂、写 A₃)
四地址OP A₁ A₂ A₃ A₄(A1) OP (A2)→A3(A_1)\ \text{OP}\ (A_2) \to A_3,A4A_4 为下一条指令的地址4 次

定长操作码与扩展操作码

  • 定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般 nn 位操作码字段的指令系统最多能够表示 2n2^n 条指令。定长操作码对于简化计算机硬件设计、提高指令译码和识别速度很有利;
  • 扩展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。最常见的是在指令字长一定的条件下,地址码越少的指令,操作码越长——让地址码字段”让出”位来扩展操作码。
指令字长 16 位,地址码 4 位:OP(4) | A₁(4) | A₂(4) | A₃(4)三地址指令 15 条0000 ~ 1110A₁A₂A₃二地址指令 15 条11110000 ~ 1110A₁A₂一地址指令 15 条111111110000 ~ 1110A₁零地址指令 16 条1111111111110000 ~ 1111
紫色为操作码。上一级预留出来的编码(1111)作为下一级的”扩展标志”
例题

某指令系统指令字长 16 位,每个地址码 6 位。若二地址指令 15 条,一地址指令 34 条,则剩下的零地址指令最多有多少条?

查看解答

二地址指令的操作码为 16−12=416 - 12 = 4 位,共 16 种编码,用去 15 种,剩 1 种作为扩展标志;一地址指令的操作码为 4+6=104 + 6 = 10 位,可用编码 1×26=641 \times 2^6 = 64 种,用去 34 种,剩 30 种;零地址指令的操作码为 16 位,最多有 30×26=192030 \times 2^6 = 1920 条。

操作类型

类型举例
数据传送MOV、LOAD(主存 → 寄存器)、STORE(寄存器 → 主存)、PUSH、POP
算术和逻辑运算ADD、SUB、MUL、DIV、INC、DEC、CMP、AND、OR、NOT、XOR
移位算术移位、逻辑移位、循环移位
转移无条件转移 JMP、条件转移 Jcc、调用 CALL 与返回 RET、陷阱 TRAP
输入输出IN、OUT(独立编址时使用专门的 I/O 指令)

即时练习

即时练习4 题
点击选项即可作答
  1. 1
    某计算机采用 16 位定长指令字格式,其 CPU 中有一个标志寄存器,其中包含进位/借位标志 CF、零标志 ZF 和符号标志 NF。假定为该机设计了条件转移指令,其格式如下:OP(5 位)| C | Z | N | OFFSET(8 位),其中 OFFSET 是相对偏移量,用补码表示。转移目标地址的计算公式为 (PC) + 2 + 2 × OFFSET。问:该计算机最多可有多少条指令?
  2. 2
    某计算机指令字长为 16 位,指令有双操作数、单操作数和无操作数 3 种格式,每个操作数字段均用 6 位二进制表示,该指令系统共有 m 条(m < 16)双操作数指令,并存在无操作数指令。若采用扩展操作码技术,则单操作数指令最多有( )条。
  3. 3
    二地址指令中,若两个操作数都在主存中,则取指令之后,完成 (A₁) OP (A₂) → A₁ 还需要访存( )次。
  4. 4
    下列关于扩展操作码的说法中,错误的是( )。
学完了吗?

标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。