指令寻址
通过程序计数器(PC)来给出下一条要执行的指令的地址。
顺序寻址
(PC)+"1"→PC
这里的+1并不是直接+1,而是取决于指令字长与存储字长。
例如:系统采用定长指令字结构,指令字长=存储字长=2B,主存按照字节(1B)编址,则实际上PC每次是+2
而若采用不定长指令字结构,则每次加的值取决于正在执行的指令的长度。
跳跃寻址
即通过转移指令JMP直接修改PC的值,跳转到相应的指令。
数据寻址
立即寻址
指令中存放的不是地址,而是直接存放的操作数。
一般寻址特征表现为“#”,相应的操作数又被称为立即数,一般用补码表示。
- 优点
- 仅需要一次访存
- 执行速度最快
- 缺点
- 地址码的位数限制了立即数的范围
直接寻址
存储器直接寻址
指令中的数就是操作数的地址,通过这个地址就可以访问到保存在内存中的操作数,S = (D)
寄存器直接寻址
指令中的数就是操作数(R),常用来访问固定的存储单元或寄存器
间接寻址
存储器间接寻址
指令中的数是间接地址D,间接地址对应的单元中保存的是直接地址(D),直接地址(D)对应的单元中就是操作数,S = ((D))
寄存器间接寻址
寄存器里面放的是地址(R),通过这个地址找到对应的存储单元中的内容就是目的操作数(R),S = ((R))
堆栈寻址
变址、基址寻址及其变化
变址寻址
变址寻址中内存中是基准地址(不变量),寄存器中是偏移量,两者之和作为地址,根据这个地址找到目的数据
基址寻址
基址寻址中内存中是偏移量,寄存器中是基址(不变量),两者之和作为地址,根据这个地址找到目的数据
注:变址与基址的区别
基址+变址
相对寻址
页面寻址
寻址方式
操作码隐含说明不同寻址方式
某机指令操作码最高两位
00:RR型指令,寄存器-寄存器寻址 01:RX型指令,寄存器-变址寻址 10:SI型指令,基址-立即寻址 11:SS型指令,基址-基址寻址