寻址方式
目录 · 8 个章节
定义
寻址方式解决的核心问题:如何由指令中的地址码字段 找到有效地址 ,进而找到操作数 。
| 符号 | 含义 |
|---|---|
| 指令中的地址码字段 | |
| 有效地址,实际访问内存的地址 | |
| 操作数,参与运算的数据 |
地址码 不一定是最终操作数地址——它可能是立即数、寄存器编号、内存地址,或需与寄存器相加才能得到 。
五种基础寻址方式
| 寻址方式 | 公式 | 关键理解 |
|---|---|---|
| 立即寻址 | 本身就是操作数,不访存 | |
| 直接寻址 | 就是内存地址 | |
| 间接寻址 | 指向"地址的地址",至少两次访存 | |
| 寄存器寻址 | 操作数在寄存器中 | |
| 寄存器间接寻址 | 寄存器里存内存地址 |
特点速记:立即最快但不灵活;直接简单但受限于地址字段位数;间接扩大范围但慢;寄存器快但数量有限;寄存器间接兼顾速度与寻址范围。
基址、变址、相对寻址
统一形式:
地址码 不再被当作完整地址,而是偏移量。
| 寻址方式 | 公式 | 核心用途 |
|---|---|---|
| 基址寻址 | 程序重定位( 固定, 可变) | |
| 变址寻址 | 数组遍历( 固定, 可变) | |
| 相对寻址 | 跳转与分支 |
记忆口诀: → 程序搬家; → 数组遍历; → 指令跳转。
易混点
立即寻址 vs 直接寻址
立即寻址取的是 本身;直接寻址取的是 。MOV R1, #100 vs MOV R1, 100。
寄存器寻址 vs 寄存器间接寻址
是寄存器内容本身; 是以寄存器内容为地址访问内存。
基址寻址 vs 变址寻址
公式形似但思想不同:基址寻址是"程序整体搬家",变址寻址是"数组元素逐个访问"。判断标准:固定的是谁——固定的是基址寄存器则为基址寻址,固定的是形式地址则为变址寻址。
考点
- 八种寻址方式公式必须默写:立即 、直接 、间接 、寄存器 、寄存器间接 、基址 、变址 、相对 。
- 间接寻址至少两次访存,速度最慢;立即寻址最快,但操作数大小受地址字段位数限制。
- 基址 vs 变址的区分关键:看"固定基准"是 (基址寻址)还是 (变址寻址)。
- 相对寻址计算必先确认取指后 的值,不能直接用当前指令地址加偏移。
- 给定 和内存/寄存器内容,能逐级求出 和 (如 ,,:直接寻址得 ,间接寻址得 )。
讨论
0 条评论
登录后参与讨论
暂无评论。