数据寻址方式(10种)
1.隐含寻址
在指令中隐含着操作数的地址。
如单地址的指令格式,就不是明显地在地址字段中指出第二操作数的地址,而是规定累加器ACC作为第二操作数,指令格式明显指出的仅是第一操作数的地址。因此,累加器ACC对单地址指令格式来说是隐含地址。
隐含寻址的优点是有利于缩短指令字长;缺点是需增加硬件。
2.立即(数)寻址
这种类型的指针的地址字段指出的不是操作数的地址么事操作数本身,又称为立即数。数据是用补码形式存放的。
OP | #(立即寻址特征) | A操作数本身 |
---|
立即寻址的优点是指令在执行阶段不访问主存,指令执行时间短;缺点是A的位数限制了立即数的范围。
3.直接寻址
指令字的形式地址地址A就是操作数的真实地址EA,即EA=A。
直接寻址的优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作的地址;缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改。
4.间接寻址
间接寻址是相对于直接寻址而言的,指令的地址字段给出的形式地址不是操作数的真实地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A).
间接寻址可以是一次间接寻址,还可以是多次间接寻址。
主存第一位为1时,表示取出的仍不是操作数的地址,即多次间址;当主存第一位为0时,表示取出的是操作数的地址。
间接寻址的优点是可以扩大寻址范围(优点地址EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可以方便地完成子程序返回);缺点是指令在执行阶段要多次访问。
5.寄存器寻址
在指令字中直接给出操作数所在寄存器编号,即EA=Ri,其操作数在由Ri所指的寄存器内。
寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器,指令字段短且执行速度快,支持向量/矩阵运算;缺点是寄存器价格昂贵,计算机中寄存器个数有限。
6.寄存器间接寻址
寄存器间接寻址是指在寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri)
寄存器间接寻址的特点是与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。
7.相对寻址
相对寻址是把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址。即EA=(PC)+A,其中A是相对于当前地址的位移量,可正可负,补码表示。
A的位数决定操作数的寻址范围。
相对寻址的优点是操作数的地址不是固定的,它随着PC的值得变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动,相对寻址广泛应用于转移指令。
对于转移指令JMPA,当CPU从存储器中取出一个字节时,会自动执行(PC)+1->PC.若转移指令的地址为X,且占2个字节,在取出该指令后PC的值会增2,即(PC)=X+2,这样在执行完该指令后,会指定跳转到X+2+A的地址继续执行。
8.基址寻址
基址寻址是将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,EA=(BR)+A。其中基址寄存器既可采用专用寄存器,也可以采用通用寄存器。
基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。
基址寻址的特点是可扩大寻址范围(基址寻址的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序。
9.变址寻址
有效地址EA等于指令中的形式地址A与编制寄存器IX的内容相加之和,即EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)。
变址寻址的优点是可扩大寻址范围(变址寄存器的位数大于形式地址A的位数),在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任意数据的地址,特别适合编制循环程序。
显然,变址寻址与基址寻址的有效地址形成过程及其相似。但从本质上来讲,两者有较大区别。基址寻址主要用于为多道程序或数据分配存储空间,故基址寄存器的内容通常由操作系统和管理程序确定,在程序的执行过程中其值不可变,而指令字中的A是可变的;变址寻址主要用于处理数组问题,在变址寻址中,变址寄存器的内容是由用户设定的,在程序执行过程中,其值可变,而指令字中的A是不可变的。
10.堆栈寻址
堆栈是存储器(或专用寄存器组)中一块特定的按“先进后出(LIFO)”原则管理的存储区,该存储区中被读、写单元的地址是用特定的寄存器给出的,该寄存器称为堆栈指针(SP)。堆栈可分为硬堆栈和软堆栈两种。
寄存器堆栈又称为硬堆栈。寄存器堆栈的成本比较高,不适合做大容量的堆栈;而从主存中划出一段区域来做堆栈是最合算且最常用的方法,这种堆栈称为软堆栈。
在采用堆栈结构的计算机系统中,大部分指令表面上都表现为为无操作数指令的形式,因为操作数地址都隐含使用了SP。通常情况下,在读写堆栈中的一个单元的前后都伴有自动完成对SP内容的增量或减量操作。
数据寻址方式(10种)相关推荐
- 恢复 iPhone 和 iPad 数据的 10 种简单工具
它发生了.. 有时您需要从您的手机或平板设备恢复重要数据. 许多人已经开始将重要文件存储在手机上,因为他们几乎可以在任何情况下随时随地轻松访问数据. 从技术上讲,您会在几分之一秒内丢失所有存储的信息. ...
- 「数据科学家」必备的10种机器学习算法
来源 | 雷克世界(ID:raicworld) 编译 | 嗯~是阿童木呀.KABUDA.EVA 可以说,机器学习从业者都是个性迥异的.虽然其中一些人会说"我是X方面的专家,X可以在任何类型的 ...
- python与excel做数据可视化-用Python进行数据可视化的10种方法
原标题:用Python进行数据可视化的10种方法 2015-11-19 关于转载授权 大数据文摘作品,欢迎个人转发朋友圈,自媒体.媒体.机构转载务必申请授权,后台留言"机构名称+转载&quo ...
- Google首席决策师告诉你,AI和数据科学团队需要哪10种角色
导读:组建一个出色的数据团队都需要哪些角色?Google 的首席决策工程师 Cassie Kozyrkov 在这一问题上有自己独到的见解.在她看来,一个好的 AI 和数据科学团队需要 10 种不同的角 ...
- 线性代数在计算机视觉的应用,10种线性代数在数据科学中的强大应用(内附多种资源)...
本文摘要线性代数为各种各样的数据科学算法和应用提供支持 在这里,我会向您介绍通过线性代数帮助您成为更好的数据科学家的10种实际应用 我们已将这些应用程序分类到各个领域 - 基本机器学习,降维,自然语言 ...
- 10种网站数据的采集方法
10种AI训练数据采集工具排行榜 10种网站数据的采集方法 1.目前常用的10种网站数据 2.如何写Python爬虫: 3.人生第一个 爬虫代码示例: 另外: 10种网站数据的采集方法 如何收集网站数 ...
- 10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽
10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽 原文:http://www.bloomberg.com/slideshow/2014-06-03/10-surprising-ways-yo ...
- 10种招聘数据的采集方法
10种AI训练数据采集工具排行榜 10种招聘数据的采集方法 1.目前常用的10种数据网站 2.如何写Python爬虫: 3.人生第一个 爬虫代码示例: 另外: 10种招聘数据的采集方法 如何收集招聘数 ...
- Google首席决策师告诉你AI和数据科学团队需要哪10种角色?
作者 | Cassie Kozyrkov 译者 | linstancy.王天宇 编辑 | Jane.琥珀 出品 | AI 科技大本营 [导读]组建一个出色的数据团队都需要哪些角色?Google 的首席 ...
最新文章
- Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析(上)...
- 为什么三层交换机无法替代路由器?
- AOP配置开发入门案例
- 什么是单点登录(SSO)
- python django框架分析_Django框架模型简单介绍与使用分析
- Python-流程控制之循环
- [AtCoder Beginner Contest 216] 题解
- 【前端项目】<开发实战>一个小而精致的个人简历
- threejs添加天空盒
- PS图片删除需要计算机管理权限,电脑打开ps,显示没有管理员权限
- 建兴固态硬盘垃圾/LITEON SSD SUCKS
- 零基础入门学习python笔记-day1:程序开发谋定而后动
- Mac连接Xbox控制器(手柄)
- VUE使用vue-tree-color组件实现组织架构图(递归数据,简单明了)
- 【日常】FIFA世界杯和历史事件
- 如何將excel內容导出XML
- 网络视频服务器与数字硬盘录像机的区别
- Linux基本命令-grep 命令
- sqlite developer注册码
- cucumber java 搭建_intelj idea cucumber java搭建教程