「计算机组成原理」:常见的指令寻址方式( 二 )
所以 , 通常用于给定的某一寄存器或者主存单元赋值 , 或者用于提供某一常数 。 换成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) 。
推荐阅读
- 家电|拆开才知道 原来这些家电和手机震动是一个原理
- 名字|美国一女子成为世界上名字最长的人:由1019个字母组成
- 论文|2020中国卓越科技论文近50万篇:计算机等4大领域位列世界第一
- 灯|猎豹汽车“U形转弯大灯”海报引热议!网友:重新定义光学原理
- 暴雪|东北矿泉水一晃秒变沙冰 这就是北方冬天的魔法吗?原理揭秘
- 苹果|尚存巨大性能潜力!网友公开M1 Max隐藏结构:将有望组成多芯片架构
- IDC|仅剩十年!IDC称经典计算机将面临来自量子计算机的巨大挑战
- 大学生|5名大学生处置实验室漏水获奖12万:避免我国新一代量子计算机研发延误
- 苹果|新Mac Pro曝光:4个M1 Max组成 售价将超过5万美元
- 癌症|可用于癌症等疾病研究 美国成功开发纳米“计算机”
