指令寻址
指令寻址方式 | 特点 |
---|---|
顺序寻址 | PC 自动加“1” |
跳跃寻址 | 分为绝对转移(直接指出转移目标地址)和相对转移(指出相对于当前 PC 的偏移量),得出最终转移结果后修改 PC 值。 |
Tip
指令寻址总是修改 PC 的值,因为 CPU 总是根据 PC 的值来读取指令。
数据寻址
在指令的每一个地址字段前增加一个寻址特征字段,以判断使用哪种寻址方式。
A:形式地址 EA:有效地址
以一个二地址指令格式为例:
操作码 | 寻址特征 | 形式地址 A | 寻址特征 | 形式地址 B |
---|
Tip
数据寻址要注意是无符号数还是补码表示的数。直接寻址由于地址肯定是正数,所以是无符号数;相对寻址、基址寻址和变址寻址由于是偏移寻址,可能是向负方向偏移的,所以用补码
寻址特征 | 地址 | 特点 | 适用情况 |
---|---|---|---|
隐含寻址 | 不显式给出地址 | 隐含约定第二个操作数由累加器 ACC 提供 | 用于单地址或双地址指令中 |
立即寻址 | 形式地址A 就是操作数本身,也称立即数,用补码表示 | 形式地址的位数决定了操作数的范围 | 给操作数赋初值 |
直接寻址 | EA=A | 形式地址的位数决定了可寻址的范围 | 相对于立即寻址,缩短了指令长度 |
间接寻址 | EA=(A) | 扩大了指令范围,便于编制程序,便于完成子程序返回 | |
寄存器寻址 | EA=Ri | 形式地址的位数决定了寄存器的数量 | 执行速度快 |
寄存器间接寻址 | EA=(Ri) | 寄存器的位数决定了可寻址的范围 | 扩大了寻址范围 |
相对寻址 | EA=(PC)+A,(PC)为当前指令的下一条地址 | 广泛应用于转移指令 | |
基址寻址 | EA=(BR)+A,BR 不变,A 可变 | 面向系统,BR 由系统决定 | 有利于多道程序设计和编制浮动程序 |
变址寻址 | EA=(IX)+A,IX 可变,A 不变 | 面向用户,IX 可由用户改变 | 有利于处理数组问题和编制循环程序 |