Skip to content

2016年 408 计算机组成原理 第 17 题

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

题目

某指令格式如下所示。

OPMID

其中 M 为寻址方式,I 为变址寄存器编号,D 为形式地址。若采用先变址后间址的寻址方式,则操作数的有效地址是( )。

错因

A

I(寄存器编号)当成寄存器内容用了。指令字段里的 I 只是"编号"——是寄存器的名字,比如"R3"。要拿到 R3 里存的值得加一层括号 (I),表示"取该编号寄存器中的内容"。直接 I+D 既没做"取寄存器内容"也没做"间址查内存"。

B

只完成了变址这一步: 是变址结果,本身就是一个内存地址。但题目要求"先变址后间址"——还要把这个地址当成指针,到内存里再取一次得到最终的有效地址。漏了"再加一层括号"。

D

变址写错了位置:把 D 留在了括号外,变成"先对 I 做两次解引用,再加 D"。正确顺序是:变址(拿寄存器内容加形式地址)→ 间址(再去内存里取)。((I))+D 既不是变址也不是间址,不是任何合法的标准寻址方式。

总解析

记号约定(408 真题约定俗成):

记号含义
I变址寄存器编号
(I)变址寄存器中存的内容(一个地址值)
D指令中给的形式地址(常数)
(X)把 X 当作内存地址,取该地址处存的内容

第一步:先变址

变址寻址:操作数地址 ,即把变址寄存器的内容加上形式地址。

,这是变址结果,本身是一个内存地址

第二步:后间址

间接寻址:把上一步得到的地址 当作指针,到内存里取出真正的有效地址:

最终答案是 C(((I)+D))

寻址过程示意

寄存器 I (编号)        内存
   ┌────┐            ┌──────────────┐
   │(I) │ ──┐        │              │
   └────┘   │  +D    │              │
            ▼        │              │
       (I) + D ────▶ │ 存的是 EA    │ ◀── 间址再取一次
                     │              │
                     └──────────────┘


                       最终 EA = ((I) + D)

易错点速查

错误实质
写成 I + D把寄存器编号当成内容(少了一层括号)
写成 (I) + D只做了变址,没做间址
写成 ((I)) + D变址和间址的"地址组成方式"搞错位

通用规律:每多一层"间址"就多套一层括号,括号位置始终是"对前面整个表达式取址"。

最后更新:

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

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