指令寻址和数据寻址
- 指令寻址是指寻找下一条需要执行的指令地址。指令寻址通过顺序寻址(PC+1)或转移类指令实现。
- 数据寻址是指在指令中表示一个操作数的地址。数据寻址有多种寻址方式。数据寻址的指令格式如:操作码+地址码(寻址特征+形式地址)。
寻址方式
- 隐含寻址。例如单地址指令将累加器(ACC)作为隐含第二操作数。
立即数寻址。指令的形式地址即为操作数。 - 直接寻址。指令的形式地址为操作数在主存中的地址,也即形式地址就是地址(注意指令的组成是操作码+地址码)。操作数地址=形式地址,即 EA=A。
- 间接寻址。指令的形式地址为操作数在主存中的地址的地址,也即形式地址是地址的地址。操作数地址=对形式地址进行一次间址,即 EA=(A) 。
- 寄存器寻址。指令的形式地址为存储了操作数地址的寄存器编号,也即形式地址是地址的寄存器编号。操作数地址=形式地址对应寄存器的内容,即 EA=R 。
- 寄存器间接寻址。指令的形式地址为存储了操作数地址的地址的寄存器编号,也即形式地址是地址的地址的寄存器编号。操作数地址=形式地址的地址为对应寄存器的内容,即 EA=® 。
- 相对寻址。PC+形式地址形成有效地址。一般用于转移指令。注意CPU取指令时,PC会自动执行+1,因此相对寻址要考虑当前指令的长度。EA=PC+A
- 基址寻址。BR+形式地址形成有效地址。基址寄存器面向操作系统。解决程序逻辑地址和物理地址的无关性(映射关系)。EA=BR+A
- 变址寻址。IX+形式地址形成有效地址。变址寄存器面向用户。如处理数组问题。EA=IX+A
- 堆栈寻址。即操作数含隐含地址SP(堆栈指针)。读写一个堆栈单元后有自动完成的对SP的增减操作。