间接寻址方式
Indirect Addressing Mode
我目前正在尝试解决一个问题,我需要满足这些条件:
我相信我的一些答案是正确的,但我很困惑,因为这个问题没有提到存储在地址 10 的地址,所以间接寻址怎么可能发生?
问题:以下寻址方式对应的操作数在哪里?
Assume the address field of an instruction contains the decimal 10.
Where is the corresponding operand given the following addressing
modes?
- 立即寻址:操作数- 10
- 直接寻址:操作数 - 10 -> 地址
- 间接寻址:10 -> 地址 -> 地址
- 注册地址:
- 注册间接寻址:
有人能帮帮我吗?
这是我使用的图表:
更新位置:
立即寻址:对应的操作数位于给定内存的地址域。在所有情况下,操作数只是给定内存位置的地址字段中的值。所以在这种情况下,操作数值将为 10.
直接寻址:在直接寻址中,地址字段包含操作数的地址。因此,相应的操作数将是存储在内存地址 10 处的操作数的任何内容。
间接寻址:在间接寻址中,内存地址10的内容是操作数的地址。因此,位置 10 的地址字段包含指向在其地址字段中保存操作数的位置的地址。
寄存器寻址:在寄存器寻址中,内存位置 10 的地址字段包含一个寄存器地址,而不是另一个内存地址。相应的操作数在寄存器的内容中找到。
寄存器间接寻址:寄存器间接寻址与寄存器寻址非常相似,因为内存位置 10 也包含指向包含其操作数的位置的地址;不同之处在于地址可以指向寄存器或内存位置。
为了问题的目的,假设地址 是 存储在内存位置 10。毕竟,这是真正的 CPU 所做的。如果地址无效,CPU 可能会发送信号或终止违规进程。
假设内存包含:
10: 100
20: 200
100: 1000
寄存器 #10 包含:20
答案是:
- 10:操作数包含在指令本身。
- 100
- 1000
- 20:寄存器本身包含操作数。寄存器编号在指令中编码。
- 200:寄存器包含操作数的地址。
我目前正在尝试解决一个问题,我需要满足这些条件:
我相信我的一些答案是正确的,但我很困惑,因为这个问题没有提到存储在地址 10 的地址,所以间接寻址怎么可能发生?
问题:以下寻址方式对应的操作数在哪里?
Assume the address field of an instruction contains the decimal 10. Where is the corresponding operand given the following addressing modes?
- 立即寻址:操作数- 10
- 直接寻址:操作数 - 10 -> 地址
- 间接寻址:10 -> 地址 -> 地址
- 注册地址:
- 注册间接寻址:
有人能帮帮我吗?
这是我使用的图表:
更新位置:
立即寻址:对应的操作数位于给定内存的地址域。在所有情况下,操作数只是给定内存位置的地址字段中的值。所以在这种情况下,操作数值将为 10.
直接寻址:在直接寻址中,地址字段包含操作数的地址。因此,相应的操作数将是存储在内存地址 10 处的操作数的任何内容。
间接寻址:在间接寻址中,内存地址10的内容是操作数的地址。因此,位置 10 的地址字段包含指向在其地址字段中保存操作数的位置的地址。
寄存器寻址:在寄存器寻址中,内存位置 10 的地址字段包含一个寄存器地址,而不是另一个内存地址。相应的操作数在寄存器的内容中找到。
寄存器间接寻址:寄存器间接寻址与寄存器寻址非常相似,因为内存位置 10 也包含指向包含其操作数的位置的地址;不同之处在于地址可以指向寄存器或内存位置。
为了问题的目的,假设地址 是 存储在内存位置 10。毕竟,这是真正的 CPU 所做的。如果地址无效,CPU 可能会发送信号或终止违规进程。
假设内存包含:
10: 100
20: 200
100: 1000
寄存器 #10 包含:20
答案是:
- 10:操作数包含在指令本身。
- 100
- 1000
- 20:寄存器本身包含操作数。寄存器编号在指令中编码。
- 200:寄存器包含操作数的地址。