机器指令
地址码
四地址(比较古老)

操作不灵活,从一条指令到另一条指令都是固定的
访存次数:4次
三地址

访存次数:4次
二地址

ACC是寄存器,在CPU内部,不需要访存
一地址

趋势:通过CPU内部的寄存器来减少访存次数,提高操作速度。
零地址
零地址比较特殊,一般访问的地址是默认不变的。
指令字长
指令字长取决于:
- 操作码的长度
- 操作数地址的长度
- 操作数地址的个数
指令字长的两种选择:
- 固定:指令字长=存储字长
- 可变:按字节数的倍数变化
寻址方式
寻址方式:确定本条指令的操作数地址,如何确定下一条欲执行指令的指令地址
寻址方式分类:指令寻址、数据寻址
指令寻址
顺序: $(PC+1) → PC$
跳跃: 由转移指令指出
数据寻址

形式地址:指令字中的地址
有效地址:操作数的真实地址
约定:指令自称=存储字长=机器字长
1. 立即寻址
形式地址A就是操作数,即按照数据值寻找地址

- 指令执行阶段不访存
- A的位数限制了立即数的范围
2. 直接寻址
$EA=A$,有效地址由形式地址直接给出

- 执行阶段访问一次存储器
- A的位数决定了该指令操作数的寻址范围
- 操作数的地址不易修改(必须修改A)
3. 隐含寻址
操作数地址隐含在操作码中

指令字中少了一个地址字段,可缩短指令字长
4. 间接寻址
$EA=(A)$,有效地址由形式地址间接提供

- 执行指令阶段2次访存
- 可扩大寻址范围
5. 寄存器寻址
$EA=R_i$ 有效地址即为寄存器编号
- 执行阶段不访存,只访问寄存器,执行速度快
- 寄存器个数有限,可缩短指令字长
6. 寄存器间接寻址
$EA=(R_i)$ 有效地址在寄存器中

- 有效地址在寄存器中,操作数在存储器中,执行阶段访存
- 便于编制循环程序
7. 基址寻址
(1)采用专用寄存器做基址寄存器
$EA=(BR)+A$ BR为基址寄存器

- 可扩大寻址范围
- 有利于多道程序
- BR内容由操作系统或管理程序确定
- 在程序的执行过程中BR内容不变,形式地址A可变
(2)采用通用寄存器做基址寄存器

- 由用户指定哪个通用寄存器作为基址寄存器
- 基址寄存器的内容由操作系统确定
- 在程序的执行过程中$R_0$内容不变,形式地址A可变
8. 变址寻址
$EA=(IX)+A$
IX为变址寄存器(专用)
通用寄存器也可以作为变址寄存器

- 可扩大寻址范围
- IX的内容由用户给定
- 在程序的执行过程中IX内容可变,形式地址A不变
- 便于处理数组问题
9. 相对寻址
$EA=(PC+A)$
$A$是相对于当前指令的位移量

- $A$的位数决定操作数的寻址范围
- 程序浮动
- 广泛用于转移指令
10. 堆栈寻址
略
Comments | NOTHING