寻址方式

2017-1-4

1.对于指令而言 ,分为顺序寻址以及跳跃寻址

2.对于数据而言,这就很多了……
指令的地址码字段通常都不代表操作数的真实地址,把他叫做形式地址A,操作数的真实地址称为有效地址EA,他是由寻址方式和形式地址共同决定的。
一种一地址的指令格式

操作码+寻址方式+形式地址A

(1)立即寻址:A是操作数本身,也就是立即数(换言之,我们可以直接在指令中获得操作数的值而不用访问存储器),A的位数限制了立即数的大小。

(2)直接寻址:A中存放了操作数的地址,即EA=A,我们只要根据A的值去主存中进行一次访存即可,但是A的位数限制了操作数的寻址范围。

(3)隐含寻址:指令字中不显式给出操作数的地址,其操作数的地址隐含在操作码或者某个寄存器中。比如说加法指令吧!一地址加法指令只给出了一个操作数的地址,而另一个操作数隐含在了ACC中,这种寻址方式有利于缩短指令的字长。

(4)间接寻址:指令字中给出操作数所在地址的地址,间接寻址的次数是可以多次的,如果是这样的话,我们需要存储字的首位来标志间接寻址是否结束。这种寻址方式与直接寻址方式相比:
扩大了操作数的寻址范围,假设指令字长和存储字长均为16位,如果使用直接寻址我们的寻址范围为2^A,但是如果使用间接寻址的话,我们的寻址范围可以达到2^16,当然,如果我们使用了多次间接寻址的话,寻址范围就是2^(16-1)(用一位来判断间接寻址是否结束了)。
还有便于编制程序。
缺点是在指令的执行阶段需要一次或者多次访存,这样会延长指令的执行时间。

(5)寄存器寻址:地址码给出寄存器的编号,操作数在对应的寄存器里面,无需访存,从而加快了指令的执行速度,而且指令中只要给出寄存器中的编号即可(寄存器的个数本身就是有限的),所以指令字比较短。

(6)寄存器间接寻址:寄存器中不是操作数,而是操作数的地址。

(7)基址寻址:
(8)变址寻址:

(9)相对寻址:有效地址为将程序计数器PC的内容(即当前指令的地址)与指令字中的形式地址A相加而成,即:

EA=(PC)+A

这种寻址方式常被用于转移类指令。

(10)堆栈寻址:既可用寄存器组(硬堆栈)来实现,也可以用主存的一部分空间(软堆栈)。
堆栈的运行方式分为先进后出以及先进先出两种,前者要求操作数只能从一个口进行读写。
由于堆栈指针SP中存放的是操作数的有效地址,因而他也属于一种寄存器间接寻址。而且,他也可以视为一种隐含寻址,他的操作数的地址总被隐含在寄存器SP中。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页