0%

4.2_指令的寻址方式

指令寻址

通过程序计数器(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型指令,基址-基址寻址

指令中设置专门字段说明寻址方式