第 43 题
(10 分)设某计算机有变址寻址、间接寻址和相对寻址方式,一个指令长等于一个存储字。设当前指令的地址码部分为 001AH,正在执行的指令所在地址为 1F05H,变址寄存器中的内容为 23A0H。已知存储器的部分地址及相应内容如下表所示:
(1)当执行取数指令时,如为变址寻址方式,取出的数为多少?
(2)如为间接寻址,取出的数为多少?
(3)设计算机每取一个存储字 PC 自动加 1,转移指令采用相对寻址,当执行转移指令时,转移地址为多少?若希望转移到 23A0H,则指令的地址码部分应设为多少?
[tag_link]
**【解析】** 本题考查指令的寻址方式。前两小题涉及数据寻址,其最终目的是寻址操作数,第 3 小题涉及指令寻址,其目的是寻址下一条将要执行的指令地址。下表列出了基本的寻址方式,其中偏移寻址包括变址寻址、基址寻址和相对寻址三种方式。
| 寻址方式 | 规则 | 主要优点 | 主要缺点 |
|---|---|---|---|
| 立即寻址 | 操作数=A | 无需访问存储器 | 操作数范围受限 |
| 寄存器寻址 | EA=R | 无需访问存储器 | 寻址空间受限 |
| 直接寻址 | EA=A | 简单 | 寻址空间受限 |
| 间接寻址 | EA=(A) | 寻址空间大 | 多次访问主存 |
| 寄存器间接寻址 | EA=(R) | 寻址空间大 | 多访问一次主存 |
| 偏移寻址 | EA=(R)+A | 灵活 | 复杂 |
特别注意相对寻址方式中的 PC 值更新的问题:根据历年统考真题,通常在取出当前指令后立即将 PC 的内容加 1(或加增量),使之变成下条指令的地址。
(1) 变址寻址时,操作数 。
(2) 间接寻址时,操作数 。
(3) 转移指令使用相对寻址,因为指令字长等于存储字长,PC 每取出一条指令后自动加 1,因此转移地址 = (PC) + 1 + A = 1F05H + 1 + 001AH = 1F20H。若希望转移到 23A0H,则指令的地址码部分应为 。