指令和数据的寻址方式
存储器既可用来存放数据,又可用来存放指令。因此,当某个操作数或某条指令存放在某个存储单元时,其存储单元的编号,就是该操作数或指令的在存储器中的地址。
在存储器中,操作数或指令写入或读出的方式,有地址指定方式、相连存储方式、堆栈存储方式。
当采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式。
注:冯诺依曼型计算机指令寻址和数据寻址是交替进行的; 哈佛型计算机指令寻址和数据寻址是独立进行的。
寻址方式分为两类:指令寻址方式 (下一条欲执行指令的指令地址)
数据寻址方式 (确定本条指令的操作数地址)
指令的寻址方式有两种:①顺序寻址方式 (PC)+1—>PC
②跳跃寻址方式 由转移指令指出
形成操作数的有效地址的方法,称为操作数的寻址方式。
一种单地址指令的结构如图所示,X、I、A各字段组成该指令的操作数地址。
操作码 OP | 变址 X | 间址 I | 形式地址 A |
基本寻址方式
方式 | 算法 | 主要优点 | 主要缺点 |
隐含寻址 | 操作数在专用寄存器 | 无存储器访问 | 数据范围有限 |
立即寻址 | 操作数=A | 无存储器访问 | 操作数幅值有限 |
直接寻址 | EA=A | 简单 | 地址范围有限 |
间接寻址 | EA=(A) | 大的地址范围 | 多重存储器访问 |
寄存器寻址 | EA=R | 无存储器访问 | 地址范围有限 |
寄存器间接寻址 | EA=(R) | 大的地址范围 | 额外存储器访问 |
偏移寻址 | EA=A+(R) | 灵活 | 复杂 |
段寻址 | EA=A+(R) | 灵活 | 复杂 |
堆栈寻址 | EA=栈顶 | 无需给出存储器地址 | 需要堆栈指示器 |
①操作数在寄存器中,为寄存器寻址方式; ②操作数地址在寄存器中,为寄存器间接寻址方式; ③操作数在指令中,为立即寻址方式; ④操作数地址(主存)在指令中,为直接寻址方式; ⑤操作数的地址,为某一寄存器内容与位移之和,可以是相对寻址方式、基址寻址方式、变址寻址方式。如下表所示:
| 位置 | 方式 |
操作数 | 寄存器 | 寄存器寻址方式 |
操作数地址 | 寄存器 | 寄存器间接寻址方式 |
操作数 | 指令 | 立即寻址方式 |
操作数地址 | 指令 | 直接寻址方式 |
操作数的地址,为某一寄存器内容与位移之和 | 相对寻址方式、基址寻址方式、变址寻址方式 |