4.1 指令格式与扩展操作码
指令的基本格式,零地址到三地址指令,定长与变长指令字,定长操作码与扩展操作码的设计。
指令的基本格式
指令(机器指令)是指示计算机执行某种操作的命令。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统是指令集体系结构(ISA)中最核心的部分。
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。一条指令通常要包括操作码字段和地址码字段两部分:
- 操作码指出指令应该执行什么性质的操作和具有何种功能,是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息;
- 地址码给出被操作的信息(指令或数据)的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。
指令字长是指一条指令中所包含的二进制代码的位数,取决于操作码的长度、操作数地址码的长度和操作数地址的个数。指令字长等于机器字长的称为单字长指令,等于半个机器字长的称为半字长指令,等于两个机器字长的称为双字长指令。在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构;若各种指令的长度随指令功能而异,则称为变长指令字结构。
按地址码个数分类
| 类型 | 格式 | 功能 | 访存次数(含取指,地址均为主存地址) |
|---|---|---|---|
| 零地址 | OP | 不需要操作数(空操作、停机、关中断);或用于堆栈计算机,操作数隐含在栈顶 | 1 次(仅取指) |
| 一地址 | OP A₁ | ① 单操作数:(加 1、取反);② 隐含另一个操作数在 ACC 中: | 3 次(取指、读、写);隐含 ACC 时 2 次 |
| 二地址 | OP A₁ A₂ | 4 次(取指、读 A₁、读 A₂、写 A₁) | |
| 三地址 | OP A₁ A₂ A₃ | 4 次(取指、读 A₁、读 A₂、写 A₃) | |
| 四地址 | OP A₁ A₂ A₃ A₄ | , 为下一条指令的地址 | 4 次 |
定长操作码与扩展操作码
- 定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般 位操作码字段的指令系统最多能够表示 条指令。定长操作码对于简化计算机硬件设计、提高指令译码和识别速度很有利;
- 扩展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。最常见的是在指令字长一定的条件下,地址码越少的指令,操作码越长——让地址码字段”让出”位来扩展操作码。
例题
某指令系统指令字长 16 位,每个地址码 6 位。若二地址指令 15 条,一地址指令 34 条,则剩下的零地址指令最多有多少条?
查看解答
二地址指令的操作码为 位,共 16 种编码,用去 15 种,剩 1 种作为扩展标志;一地址指令的操作码为 位,可用编码 种,用去 34 种,剩 30 种;零地址指令的操作码为 16 位,最多有 条。
操作类型
| 类型 | 举例 |
|---|---|
| 数据传送 | 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某计算机采用 16 位定长指令字格式,其 CPU 中有一个标志寄存器,其中包含进位/借位标志 CF、零标志 ZF 和符号标志 NF。假定为该机设计了条件转移指令,其格式如下:OP(5 位)| C | Z | N | OFFSET(8 位),其中 OFFSET 是相对偏移量,用补码表示。转移目标地址的计算公式为 (PC) + 2 + 2 × OFFSET。问:该计算机最多可有多少条指令?
- 2某计算机指令字长为 16 位,指令有双操作数、单操作数和无操作数 3 种格式,每个操作数字段均用 6 位二进制表示,该指令系统共有 m 条(m < 16)双操作数指令,并存在无操作数指令。若采用扩展操作码技术,则单操作数指令最多有( )条。
- 3二地址指令中,若两个操作数都在主存中,则取指令之后,完成 (A₁) OP (A₂) → A₁ 还需要访存( )次。
- 4下列关于扩展操作码的说法中,错误的是( )。
学完了吗?
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。