乐趣区

关于组成原理:寻址方式数据寻址

数据寻址

指令分为操作码和地址码,依据地址码寻找指令或者操作数有很多种形式。依据地址码找指令的叫做指令寻址,被寻找的指令为吓一跳欲执行的指令。依据地址码找操作数的叫数据寻址。明天着重讲一下数据寻址的几种形式。寻址形式对于对于编译原理很重要。

寻址特色

指令有 10 种寻数据寻址形式,那机器拿到一条指令后如何晓得用什么寻址形式呢?

咱们在地址后面退出 4 个 01 数代表不同的寻址形式,咱们称为寻址特色。

对于多地址指令,在每一个地址前退出寻址特色,代表他别离是什么寻址形式。

间接寻址


前面的地址代表咱们想要寻找的数的地址。

只须要两次次访问内存,简称两次访存(取指令也算一次)。内存读写绝对于 cpu 来说很慢,因而访存次数是一个很重要的指标。

间接寻址


指令的地址不是操作数的真正地址,而是操作数无效地址所在的存储单元的地址,也就是操作数地址的地址。

访存次数
取指令访存一次
取操作数访存两次
一共三次。
咱们上述都是找的地址的地址,称为一次间接寻址,还有屡次间接寻址。

如两次寻址,原理相似,就是嵌套次数不同。
这样减少了访存次数。为什么要有间接寻址呢?
1. 扩充寻址范畴,如果地址 A 的位数小于无效地址 EA 的位数,所以 EA 能够扩充寻址范畴,能够找到更多的数。
2. 如果一个操作数的地址会产生变换,间接寻址不须要批改指令。
多级间接寻址相比一级间接寻址有利于程序的多级调用,这里不再讲述。

寄存器寻址


寄存器寻址是指地址代表操作数所在的寄存器编号(寄存器地址),寄存器存在于 cpu 中,相较于内存能够很快的拜访。并且寄存器数量较少(读写速度越快,造价越低廉,数量越少),所以须要的地址位数更少。

取指令访存一次,取操作数不访存,一共访存一次。

寄存器间接寻址


类比于间接寻址,寄存器间接寻址的地址是一个寄存器地址,此寄存器寄存操作数所在主存单元的地址。

取指令访存一次,取操作数访存一次,一共访存两次。长处是比间接寻址更快。

隐含寻址

并没有给出具体的地址,而是指令中隐含操作数的地址

如图,给出一个操作数的地址,另一个操作数隐含在 ACC,实现算数运算。
有点有利于缩短指令字长。

立刻数寻址


立刻数寻址的地址不是一个地址,而是操作数自身,又称作立刻数。
取指令访存一次,总共访存一次。

堆栈寻址

操作数寄存在堆栈中,隐含应用堆栈指针作为操作数地址。

堆栈分为硬堆栈与软堆栈,硬堆栈的数据寄存在寄存器中,软堆栈的数据寄存在主存中。退出一个指令是执行家法指令,会顺次 POP 出栈顶的两个寄存器中的数,进行相加操作后再 PUSH 回栈顶。

退出移动版