|「计算机组成原理」:常见的指令寻址方式( 二 )
所以 , 通常用于给定的某一寄存器或者主存单元赋值 , 或者用于提供某一常数 。 换成C++代码可以看成:
1.int x = 100; 2.const int j = 100; 3.···3. 直接寻址
即地址码字段直接给出操作数所在的内存地址 , 即EA = A的情况 。 如下面的汇编指令:
mov ax [200]; 将地址为200处的数据 , 存放到ax中这种行为就像程序中直接给出变量名:
int y = x;
本文插图
优点:简单 , 执行阶段值访问一次内存 , 因此在早期的计算机中 , 常常作为主要的寻址方式 缺点:A的位数决定了该指令操作数的寻址范围 , 并且操作数的地址不易被修改 。
4. 间接寻址
间接寻址是相对直接寻址而言的 , 指令的地址字段不是操作数的真实地址 , 而是操作数的有效地址所在的存储单元的地址 , 听起来有点拗口 , 也就是操作数地址的地址 , 即EA = (A) , 间接寻址可以是一次间接寻址也可以是多次间接寻址 。 如果还是有点不好理解 , 那么用下图来理解(用间接寻址的方式取出788这个数):
本文插图
- 优点:明明可以一步到位 , 为什么还有多此一举?显然 , 这种方式可以扩大寻址范围 , 将小地址作为一个跳板 , 可以访问更多的地址空间 , 便于编程(子程序中的返回) 。
- 缺点:需要进行多次访存(一次的间接寻址就需要两次访存) 。 访问速度慢 。
寄存器寻址是指的在指令中 , 直接给出操作数所在的寄存器编号 , 即EA = Ri 。 操作数在R的内部(类似于直接寻址) 。就像下面的汇编指令:
mov ax,bx
本文插图
- 优点:指令执行时 , 不访问内存 , 只访问寄存器 , 指令字短 , 故执行速度快 , 支持向量/矩阵运算 。
- 缺点:寄存器的价格昂贵 , 且计算机内寄存器的数量有限 。
类似于间接寻址 , 寄存器中给出的不是一个操作数 , 而是操作数所在的主存单元的地址 , 即EA = Ri 。用汇编指令表示为;
mov ax,[bx]
本文插图
这种做法的主要特点就是 , 比间接寻址快 , 但是由于操作数在主存中 , 故仍需要访问内存 , 一般用于扩大寻址范围 。
7. 相对寻址
这种寻址方式的原理是基于程序的局部性原理 。 指令中的A , 加上PC上的内容 , 作为操作数的地址 。 即EA = (PC)+ A 。 其中A是相对于当前地址的偏移量 。 可正可负 。 用补码表示 。
特点:A的位数决定操作数的寻址范围 。 操作数不固定 , 随着PC的变化而变化 , 并与指令地址总差一个固定值 。 便于程序浮动 。 被广泛用于转移指令(即jump指令) 。这里注意理解PC指令的作用 。 比如下面的句子:
jump A
本文插图
CPU从存储器中取一个字节 , 即(PC)+1 ->PC.也就是说PC自增1.若此时 , 转移指令的地址为X , 且占2个字节 。 那么取出该指令后 , PC自增2 , 即(PC) = X + 2 。 执行完这个指令后 , 跳到X+2 + A处继续执行 。
8. 基址寻址(面向系统)
基址寻址 , 是将CPU中的基址寄存器(BR)的内容 , 加上指令格式中的形式地址A , 从而形成有效地址 。 即EA = A +(BR) 。
推荐阅读
- |利亚德公布Micro LED模组成本构成 可多方面改善Micro LED成本
- 中年|计算万物湘约未来 | 一碗饭也能吃出科技感!远程会议、粮食种植、语音转手语……记者探访世界计算机大会
- 区块链宝二爷|BCH为什么一定要分叉,背后的原理是什么?
- 陆超生财|想复制都难,移动支付体验全球第一的背后,支付宝做到了哪些扫码支付的基本原理。支付宝如何保障资金安全以及服务稳定为什么欧美发达国家
- 汽车美力学|长安汽车、华为、宁德时代三家联合,宣告“国家队”组成
- 刘俊明IT人|计算机领域哪些技术的发展前景较好,本科生如何进入这些领域发展
- 工业互联网|计算机领域哪些技术的发展前景较好,本科生如何进入这些领域发展
- 知识圈Plus|美国发展量子计算机解决全球难题
- |检验哈勃定律正确性方案的基本原理简介
- |人工智能之计算机视觉面试题总结,快速了解你的AI水平