计组
| 寻址方式 | 特征 | 优点 | 缺点 |
|---|---|---|---|
| 立即寻址 | 操作数直接包含在指令中 | 速度最快,不需要访问内存 | 操作数范围受指令长度限制 |
| 直接寻址 | 指令地址字段直接给出操作数地址 | 简单,只需一次访存 | 地址空间受限,寻址范围小 |
| 间接寻址 | 指令地址字段指向存放有效地址的存储单元 | 可扩大寻址范围,支持程序动态修改地址 | 需要多次访存,速度慢 |
| 寄存器寻址 | 操作数在CPU寄存器中 | 速度快,不访问内存 | 可用寄存器数量有限 |
| 寄存器间接寻址 | 寄存器中存放操作数地址 | 地址范围大,访问灵活 | 需要访问内存,速度较慢 |
| 变址寻址 | 有效地址 = 指令地址字段 + 变址寄存器内容 | 适合数组、循环访问 | 硬件结构较复杂 |
| 基址寻址 | 有效地址 = 基址寄存器内容 + 偏移量 | 支持程序重定位,扩大寻址范围 | 需要额外寄存器 |
| 相对寻址 | 有效地址 = PC当前值 + 地址偏移量 | 适合转移指令,支持程序浮动 | 寻址范围有限 |
| 堆栈寻址 | 操作数存放在栈顶,由SP指示 | 指令短,适合函数调用、中断处理 | 访问灵活性较低 |
总结:
- 速度排序(快 → 慢):寄存器寻址 ≈ 立即寻址 > 直接寻址 > 间接寻址
- 扩大地址范围:间接寻址、基址寻址、变址寻址
- 适合数组处理:变址寻址
- 适合程序模块化与重定位:基址寻址、相对寻址
- 适合函数调用:堆栈寻址
核心公式:
- 直接寻址:EA = A
- 间接寻址:EA = (A)
- 变址寻址:EA = A + IX
- 基址寻址:EA = A + BR
- 相对寻址:EA = PC + A
其中 EA(Effective Address)表示有效地址,A表示指令中的地址字段。