机器指令的十种数据寻址方式

1. 什么是指令?

计算机指令是一组计算机可以识别和执行的指令,也称为机器指令,是计算机运行的最小功能单位
一条指令由操作码 + 地址码组成,其中地址码可能有0-4个。

2. 指令如何工作?

在这里插入图片描述

指令寻址:下一条欲执行指令的指令地址,始终由程序计数器PC给出,包括 顺序寻址和跳跃寻址。
数据寻址:确定本条指令的地址码指明的真实地址,即地址码的解释。

指令工作方式:先进行“指令寻址”,由PC给出下一条指令的指令地址;然后再进行“数据寻址”,根据地址码的寻址特征位,确定寻址方式;最后根据形式地址A,求出操作数的真实地址EA。

3.十种数据寻址方式

1)直接寻址

在这里插入图片描述
定义:指令字中的形式地址A就是操作数的 真实地址 EA,即EA=A。
优点:简单,指令执行阶段仅访问一次主存,不需要专门计算操作数的地址。
缺点:A的位数决定了该指令操作数的寻址访问,操作数的地址不易修改。
一条指令的执行:取指令访存一次,执行指令访存一次,共访存两次。

2)间接寻址

在这里插入图片描述
定义:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有 效地址的 存储单元的地址 ,也就是操作数地址的地址,即EA=(A)。
优点:可扩大寻址访问(有效地址EA的位数大于地址A的位数),便于编制 程序(用间接寻址可以方便地完成子程序的返回)。
缺点:指令在执行阶段要多次访存,导致指令执行效率降低。
一条指令的执行:取指令访存一次,执行指令访存两次,共访存三次。
注:(A)表示A地址中的数据。

3)寄存器寻址

在这里插入图片描述
定义:在指令字中直接给出操作数所在的 寄存器编号 ,即EA=Ri,其操作数在 Ri所在的寄存器内。
优点:指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快, 支持向量/矩阵运算。
缺点:CPU内寄存器价格昂贵,个数有限。
一条指令的执行:取指令访存一次,执行指令访存0次,共访存一次。

4)寄存器间接寻址

在这里插入图片描述
定义:寄存器Ri给出的不是一个操作数,而是操作数所在 主存单元的地址 , 即EA=(Ri)。
特点:与一般间接寻址比速度更快,但指令的执行阶段需要访问主存。
一条指令的执行:取指令访存一次,执行指令访存一次,共访存两次。

5)立即寻址

在这里插入图片描述
定义:形式地址A就是 操作数本身 而不是操作数的地址,又称为立即数,一般采用补码形式。#表示立即寻址特征。
例如:LOAD #985,则说明985是一个立即数,而不是一个地址。
优点:指令执行阶段不访问主存,指令执行时间最短。
缺点:形式地址A的位数限制了立即数的范围。
一条指令的执行:取指令访存一次,执行指令访存0次,共访存一次。

6)隐含寻址

在这里插入图片描述
定义:不是明显地给出操作数的地址,而是在指令中 隐含着操作数的地址。如上图所示,A只是给出了一个操作数的地址,而另一个操作数默认隐含在ACC累加寄存器当中,不在指令中显示。
优点:有利于缩短指令字长。
缺点:需要增加存储操作数或隐含地址的硬件。

7)基址寻址(偏移寻址)

在这里插入图片描述
定义:以程序的起始存放地址作为“起点”,将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA =(BR)+ A。
优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序(整个程序在内存里边的浮动)。
:基址寄存器是 面向操作系统 的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(偏移量)。

8)变址寻址(偏移寻址)

在这里插入图片描述
定义:程序员自己决定从哪里作为“起点”,有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA =(IX)+ A,其中IX可为变址寄存器,也可用通用寄存器作为变址寄存器。
优点:在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。
:变址寄存器是 面向用户 的,在程序执行过程中,变址寄存器的内容可由用户改变(IX作为偏移量),形式地址A不变(作为基地址)。

实际使用如下在这里插入图片描述

9)相对寻址(偏移寻址)

在这里插入图片描述
定义:以程序计数器PC所指地址作为“起点”, 加上指令格式中的形式地址A而形成的操作数的有效地址,即EA =(PC)+ A,其中A是相对于PC所指的位移量,可正可负,补码表示。
优点:操作数的地址不是固定的,他随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动(一段代码在程序内部的浮动),相对寻址广泛应用于转移指令。
:取出当前指令后, PC会自动指向下一条指令,相对寻址是相对下一条指令的偏移。
实际使用如下在这里插入图片描述

10)堆栈寻址

在这里插入图片描述
定义:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。
堆栈:堆栈时存储器(或专用寄存器组)中一块特定的按“先进先出”原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。

4. 总结

在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值