寻址的本质
CPU 执行指令时,需要找到操作数的位置。寻址方式就是告诉 CPU 去哪里找数据。
立即数寻址
数据直接在指令中:
|
|
- 最快,无需访问内存
- 数据随指令一起从代码段取出
寄存器寻址
操作数在寄存器中:
|
|
- 极快,寄存器在 CPU 内部
- 无内存访问延迟
直接寻址
操作数在内存的固定地址:
|
|
- 访问
DS:2000h处的数据 - 地址在编译时确定
寄存器间接寻址
地址在寄存器中:
|
|
- 地址 =
DS:BX - 适合遍历数组
基址寻址
|
|
- 地址 =
SS:BP + 10h(注意用 SS 段) - 常用于访问局部变量
变址寻址
|
|
- 地址 =
DS:SI + 50h - 适合数组元素访问
基址变址寻址
|
|
- 地址 =
DS:BX + SI + 100h - 最灵活,适合二维数组或结构体成员访问
性能对比
| 寻址方式 | 内存访问次数 | 相对速度 |
|---|---|---|
| 立即数 | 0 | ⚡ 最快 |
| 寄存器 | 0 | ⚡ 最快 |
| 直接 | 1 | 较快 |
| 间接 | 1 | 中等 |
| 基址变址 | 1 | 较慢(计算地址) |
总结
选择合适的寻址方式,是汇编性能优化的第一步。简单变量用直接寻址,数组用变址,结构体用基址变址。
下一篇:《堆栈操作深度解析:PUSH/POP 与函数调用的秘密》