Skip to content

2009年 408 计算机组成原理 第 16 题

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

题目

某机器字长 16 位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节 PC 自动加 1。若某转移指令所在主存地址为 2000H,相对位移量字段的内容为 06H,则该转移指令成功转移后的目标地址是()。

错因

A

直接用指令首地址 + 位移量 = 2000H + 06H = 2006H,忽略了"PC 在取指过程中已经增量"这件事。相对寻址的基准从来不是"指令所在地址",而是"PC 当前值"——而 CPU 取完整条指令后,PC 已经指向下一条指令的首地址。

B

只算了一次 PC+1:2000H + 1 + 06H = 2007H。这暴露了对题面"每取一个字节 PC 自动加 1"的理解不完整——转移指令有 2 个字节,必须取 2 次,所以 PC 自动 +1 也要发生 2 次,最终 PC = 2002H 才对。

D

PC 多算了 1 次:2000H + 3 + 06H = 2009H。可能是把"指令长度 2 字节"和"PC 又前进 1"叠加,或者机械地认为"PC 还要再 +1 才能到下一条指令"。本题指令只 2 个字节,PC 只增量 2 次,多算第 3 次没有依据。

总解析

核心规则:相对寻址的目标地址公式是

其中 取完当前指令后的 PC 值——也就是指向下一条指令首地址的那个 PC,不是指令的起始地址。

第一步:模拟取指过程中 PC 的变化

时刻动作PC 值
取指开始(指向操作码字节)
取第 1 字节(操作码)PC 自动 +1
取第 2 字节(位移量)PC 自动 +1(指向下一条指令)

转移指令共 2 字节,取完后

第二步:代入相对寻址公式

最终答案是 C(2008H)

易错点速记

  1. 相对寻址的基准是"取完指令后的 PC",不是"指令起始地址"
  2. PC 的增量次数 = 指令字节数(本题指令 2 字节,PC 增 2 次)
  3. 一句话记住:目标地址 = 指令首地址 + 指令长度 + 位移量

最后更新:

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

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