Skip to content

2022年 408 计算机组成原理 第 19 题

计算机组成原理2022年选择题2分

题目

设计某指令系统时,假设采用 16 位定长指令字格式,操作码使用扩展编码方式,地址码为 6 位,包含零地址、一地址和二地址 3 种格式的指令。若二地址指令有 12 条,一地址指令有 254 条,则零地址指令的条数最多为( )。

错因

A

误以为"一地址 254 条几乎用完所有空间,零地址不可能再有"。其实从一地址扩展到零地址时,地址码 6 位会被释放出来作为额外的操作码字段,使每个剩余的一地址前缀能再分裂成 个零地址指令。即使只剩 1 个一地址前缀未用,零地址也能扩出 64 条。

B

只数到了"未用的 10 位前缀有 2 个",忘了再乘 。从一地址(10 位 OP)扩展到零地址(16 位 OP)多出 6 位地址码空间,每个未用前缀可繁殖出 条零地址指令。。只写 2 等于止步在前缀计数。

C

只算了 1 个未用前缀的扩展()。题目算下来一地址最多 256 条(),已用 254 条 → 剩 2 个 10 位前缀,不是 1 个。 才对。

总解析

第一步:分层算"每级操作码可用空间"

定长指令字 16 位 = OP + 地址码。每多一段地址码占 6 位:

指令格式地址码占用OP 位数OP 总编码数
二地址12(两个 6 位)16 − 12 = 4
一地址616 − 6 = 10
零地址016

第二步:扩展编码的核心规则

短 OP 中未使用的编码才能作为更长 OP 的"前缀"。每多 6 位地址码空间释放,可乘 倍。

第三步:从二地址 → 一地址

  • 二地址 OP 4 位,共 16 个编码
  • 已用 12 条二地址 → 剩 个 4 位前缀可扩展
  • 每个 4 位前缀 + 6 位次操作码 = 10 位 OP
  • 一地址最多 =
  • 题目说一地址 254 条 → 剩 个 10 位前缀未用

第四步:从一地址 → 零地址

  • 每个未用 10 位前缀 + 6 位末操作码 = 16 位 OP
  • 零地址最多 =

汇总(一图看完)

步骤计算结果
二地址未用前缀4 个(4 位)
一地址容量上限256
一地址未用前缀2 个(10 位)
零地址容量上限128

最终答案是 D(128)

操作码扩展编码 通用模板

设当前格式 OP 位数为 ,已用 条;下一级地址码减少 位(即 OP 加长 位):

易错点

  1. 每多 6 位地址码空间,乘 ——本题主线是"翻倍 64 → 翻倍 64"
  2. 未用前缀数 = 上级总编码 − 已用条数(不是地址码差)
  3. 提到"最多"暗示题目假设把所有能扩展的都用尽——不要保留余量

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数