寻址
# 一、知识补充:
- 用户编写好C语言程序
- 寄存器获取C语言程序,将其转换成二进制
- 将二进制存储进内存中
- 内存获取到二进制数据后,将二进制的地址交给CPU控制器中的地址寄存器
- 控制器控制单元,读取地址寄存器。根据地址去内存中获取指令
- 控制器控制单元,将指令放到其指令寄存器中
- 控制器,读取指令寄存器中的指令
- 控制器在读取指令寄存器中的指令时,有5中主要的情形
- 立即寻址:控制单元读取指令寄存器的时候,发现指令里面直接包含了操作操作内从
- 直接寻址:控制单元读取指令寄存器中的指令,根据指令去内存中获取到对应的数据,然后将数据存储到其数据寄存器中
- 寄存器寻址:控制单元读取指令寄存器中的指令,根据指令直接去数据寄存器中寻找操作数
- 寄存器间接寻址:控制单元读取指令寄存器中的指令,根据指令去数据寄存器中获取,发现是一个地址,然后又去另外的一个数据寄存器中获取操作数据
- 间接寻址:控制单元读取指令寄存器中的指令,根据指令去内存中获取操作数,发现是一个地址,然后根据地址又去内存中寻找对应的操作数
# 二、立即寻址
操作数直接包含在指令中。例如,指令 ADD R1, #5
中的 #5
就是立即数。
# 三、直接寻址
指令中包含操作数的内存地址。CPU根据这个地址直接访问内存中的数据。例如,LOAD R1, 1000
表示将地址 1000 处的值加载到 R1。
# 四、寄存器寻址
操作数存储在寄存器中,指令直接指定寄存器。例如,ADD R1, R2
表示将 R2 的值加到 R1 中。
# 五、寄存器间接寻址
指令指定一个寄存器,寄存器中存储的是一个地址。CPU首先读取这个地址,然后去访问该地址处的操作数。例如,指令 LOAD R1, (R2)
表示从 R2 指向的地址加载数据到 R1。
# 六、间接寻址
与寄存器间接寻址类似,但可以是内存中的地址。指令中包含一个地址,该地址指向另一个地址,CPU根据第二个地址访问数据。例如,LOAD R1, (1000)
表示从地址 1000 中存储的地址加载数据到 R1。
编辑 (opens new window)
上次更新: 2025/04/29, 3:04:00