1

我目前正在尝试解决给定以下标准的问题:

我相信我的一些答案是正确的,但我很困惑,因为这个问题没有提到存储在地址 10 的地址,那么间接寻址怎么会发生呢?

问题:给定以下寻址模式,对应的操作数在哪里?

假设一条指令的地址字段包含十进制 10。给定以下寻址模式,对应的操作数在哪里?

  1. 立即寻址:操作数 - 10
  2. 直接寻址:操作数 - 10 -> 地址
  3. 间接寻址:10 -> 地址 -> 地址
  4. 寄存器寻址:
  5. 寄存器间接寻址:

有人可以帮帮我吗?

这是我正在使用的图表: 在此处输入图像描述

更新地点:

  • 立即寻址:对应的操作数位于给定内存的地址字段中。在所有情况下,操作数只是给定内存位置的地址字段中的值。所以在这种情况下,操作数的值为 10。

  • 直接寻址:在直接寻址中,地址字段包含操作数的地址。因此,相应的操作数将是存储在内存地址 10 的操作数的任何内容。

  • 间接寻址:在间接寻址中,内存地址 10 的内容是操作数的地址。因此,位置 10 的地址字段包含指向在其地址字段中保存操作数的位置的地址。

  • 寄存器寻址:在寄存器寻址中,存储器位置 10 的地址字段保存一个寄存器地址,而不是另一个存储器地址。相应的操作数在寄存器的内容中找到。

  • 寄存器间接寻址:寄存器间接寻址与寄存器寻址非常相似,因为内存位置 10 也保存了指向包含其操作数的位置的地址;不同之处在于地址可以是寄存器或内存位置。

4

1 回答 1

0

出于问题的目的,假设地址存储在内存位置 10 中。毕竟,这是真正的 CPU 所做的。如果地址无效,CPU 可能会发送信号或终止有问题的进程。

假设内存包含:

10: 100
20: 200
100: 1000

并且寄存器 #10 包含:20

答案是:

  1. 10:操作数包含在指令本身中。
  2. 100
  3. 1000
  4. 20:寄存器本身包含操作数。寄存器编号在指令中编码。
  5. 200:寄存器包含操作数的地址。
于 2015-04-30T04:26:17.897 回答