寻址方式
寻址方式:采用地址指定方式时,形成操作数或指令地址的方式
寻址方式分为1. 指令寻址方式;2. 数据寻址方式
在冯诺依曼型计算机中,内存中指令的寻址与数据的寻址是交替进行的;
在哈佛型计算机中,指令寻址和数据寻址是独立进行的。
指令寻址方式
指令寻址方式有两种:1. 顺序寻址方式;2. 跳跃寻址方式
1. 顺序寻址方式
通过程序计数器PC+1,自动形成下一条指令的地址
2. 跳跃寻址方式
通过转移类指令实现,下条指令的地址不由程序计数器PC给出,而由本条指令给出;
跳跃的结果是当前指令修改了PC的值,下一条指令仍由PC给出
数据寻址方式
1. 隐含寻址
没有明显给出操作数的地址,而是在指令中隐含着操作数的地址。
累加寄存器AC对单地址指令格式来说是隐含地址
2. 立即寻址
例:A + 02H -> A
指令的地址字段给出的不是操作数地址而是操作数本身
3. 直接寻址
例:A + EM[02H] -> A
指令的地址字段给出了操作数在内存中的地址
4. 间接寻址
例:A + EM[EM[02H]] -> A
指令的地址字段给出的操作数地址是形式地址,不是操作数的真正地址
5. 寄存器寻址
例: A + R0 -> A
指令的操作数没有放在内存中,而是在CPU的通用寄存器中
6. 寄存器间接寻址
例: A + EM[R0] -> A
指令格式中的寄存器存放的不是操作数本身,而是操作数在内存中的地址
7. 偏移寻址
直接寻址和寄存器间接寻址的结合
常用的三种偏移寻址: 1.相对寻址;2. 基址寻址;3. 变址寻址
1. 相对寻址
程序计数器PC的内容加上指令中的形式地址A就是操作数的有效地址
2. 基址寻址
基址寄存器的内容加上指令中的形式地址A就是操作数的有效地址
段寻址属于基址寻址
3. 变址寻址
变址寄存器的内容加上指令中的形式地址A就是操作数的有效地址