寻址方式就是如何找到指令或者数据的地址,因此寻址方式分为两种:指令寻址和数据寻址
指令寻址
指令寻址有两种方式:顺序寻址和跳跃寻址
所谓顺序寻址就是取完一条指令之后,顺序的取下一条指令,$(PC) + 1 \to PC$
跳跃寻址是由转移指令指出下一条指令的地址
数据寻址
立即寻址
- 形式地址A就是操作数
- 指令执行阶段不访存
- A的位数限制了立即数的范围
直接寻址
- 执行阶段访问一次存储器
- A的位数决定了该指令操作数的寻址范围
- 操作数的地址不易修改(必须修改A)
隐含寻址
间接寻址
- 指令执行阶段至少2次访存
- 可扩大寻址范围
- 便于编制程序
寄存器寻址
- 执行阶段不访存,至访问寄存器,执行速度快
- 寄存器个数有限,可缩短指令字长
寄存器间接寻址
- 有效地址在寄存器中, 操作数在存储器中,执行阶段访存
- 便于编制循环程序
基址寻址
(1)采用专用寄存器作基址寄存器
- 可扩大寻址范围
- 有利于多道程序
- BR 内容由操作系统或管理程序确定
- 在程序的执行过程中 BR 内容不变,形式地址 A 可变
(2)采用通用寄存器作基址寄存器
- 由用户指定哪个通用寄存器作为基址寄存器
- 基址寄存器的内容由操作系统确定
- 在程序的执行过程中 R0 内容不变,形式地址 A 可变
变址寻址
- 可扩大寻址范围
- IX 的内容由用户给定
- 在程序的执行过程中 IX 内容可变,形式地址 A 不变
- 便于处理数组问题
相对寻址
- A 的位数决定操作数的寻址范围
- 程序浮动
- 广泛用于转移指令