-
寻址方式
2018-01-04 19:59:51寻址方式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中。
-
工作线程设置多少合适
-
Windows系统管理
-
QUESTION 49-AWR
-
法律层级划分图
-
整合MyBatis【springboot】
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
通过预安装给MultiDex加速
-
从HelloWorld说程序运行机制
-
Python启蒙到架构师的核心技术精讲课程
-
程序员必修基础套餐课
-
使用差分进化快速检测人类
-
Keil.STM32F2xx_DFP.2.9.0.1.rar
-
vue3从0到1-超详细
-
PPTP_NNN 服务生产环境实战教程
-
气缸盖激光热负荷试验模型相关参数的校核研究
-
C++MFC开发远程控制软件教程(VS2013)
-
机抖激光陀螺零偏温度补偿方法的研究
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
PPT大神之路高清教程
-
物联网基础篇:快速玩转MQTT