4.2 寻址方式
指令寻址与数据寻址,立即、直接、间接、寄存器、寄存器间接、相对、基址、变址、堆栈寻址的有效地址计算与特点。
寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类。
指令寻址
指令寻址方式有两种:
- 顺序寻址:通过程序计数器 PC 自动加 1(1 个指令字长),自动形成下一条指令的地址;
- 跳跃寻址:通过转移类指令实现。所谓跳跃,是指下条指令的地址码不由程序计数器给出,而由本条指令给出下条指令地址的计算方式。跳跃寻址分为绝对转移(地址码直接指出转移目标地址)和相对转移(地址码指出转移目标地址相对于当前 PC 值的偏移量)。
数据寻址
数据寻址是指如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。指令中需要设置一个字段来指明属于哪种寻址方式,指令的地址码字段通常都不代表操作数的真实地址,这种地址称为形式地址(A)。形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址(EA)。
动画演示寻址方式:间接寻址
1/5间接寻址:指令已取入 IR,PC 已加 1 指向下一条指令(PC = 201)。形式地址 A = 30
| 寻址方式 | 有效地址 | 访存次数(取操作数) | 特点 |
|---|---|---|---|
| 隐含寻址 | 程序指定 | 0 | 操作数隐含在 ACC 等专用寄存器中,缩短指令字长 |
| 立即寻址 | 操作数 = A | 0 | 速度快;A 的位数限制了立即数的范围 |
| 直接寻址 | EA = A | 1 | 简单;寻址范围受 A 的位数限制,操作数地址不易修改 |
| 一次间接寻址 | EA = (A) | 2 | 扩大寻址范围,便于编制程序;访存次数多 |
| 寄存器寻址 | 操作数 = (Rᵢ) | 0 | 指令短,不访存,速度快;寄存器数量有限 |
| 寄存器间接寻址 | EA = (Rᵢ) | 1 | 比一般间接寻址速度快 |
| 相对寻址 | EA = (PC) + A | 1 | A 为补码偏移量;便于程序浮动,广泛用于转移指令 |
| 基址寻址 | EA = (BR) + A | 1 | BR 由操作系统决定,面向系统;扩大寻址范围,适合多道程序的重定位 |
| 变址寻址 | EA = (IX) + A | 1 | IX 的内容由用户改变,面向用户;适合编制循环程序、处理数组 |
| 堆栈寻址 | 栈顶(SP) | 硬堆栈 0,软堆栈 1 | 操作数隐含在栈顶,零地址指令 |
例题(408 真题风格)
某计算机按字节编址,采用相对寻址的转移指令占 2 字节,第一字节为操作码,第二字节为相对位移量(补码表示)。若某转移指令所在主存地址为 2000H,相对位移量字段的内容为 06H,则该转移指令成功转移后的目标地址是多少?
查看解答
取指后 PC 已加 2,为 2002H。目标地址 = (PC) + 06H = 2002H + 06H = 2008H。
即时练习
即时练习4 题
点击选项即可作答
- 1某计算机有 16 个通用寄存器,采用 32 位定长指令字,操作码字段(含寻址方式位)为 8 位,Store 指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式。若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则 Store 指令中偏移量的取值范围是( )。
- 2偏移寻址通过将某个寄存器内容与一个形式地址相加而生成有效地址。下列寻址方式中,不属于偏移寻址方式的是( )。
- 3为了缩短指令中地址码的位数,应采用的寻址方式是( )。
- 4执行一条一地址的加法指令共需要访存 3 次,则该指令中操作数的寻址方式是( )。
学完了吗?
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。