计算机组成原理第四章指令系统————指令的寻址方式

指令系统

第一节: 指令的格式


第二节: 指令的寻址方式

寻址方式:寻找本条指令的数据地址和下一条指令的地址。寻址方式包括指令寻址和数据寻址两大类。

指令寻址

指令寻址:找到下一条将要执行的指令。

  1. 顺序寻址:通过PC计数器+1(指令字长),自动确定下一条指令的地址。
  2. 跳跃寻址:通过转移类指令实现。地址有本条指令给出下条地址的计算方式。跳跃形成的结果是当前指令修改的PC值。下一条指令的地址有PC计算器给出。

数据寻址

数据寻址:找到本条指令的操作数地址。
指令格式:[OP][寻址特征][形式地址A] 寻址特征表明数据的寻址方式

隐含寻址

隐含寻址:不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。
优点:有利于缩短指令字长。
缺点:需增加存储操作数或隐含地址的硬件。

立即寻址

立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码形式。 #表示立即寻址特征。
优点:指令执行阶段不访问主存,指令执行时间最短
缺点:A的位数限制了立即数的范围。

直接寻址

直接寻址:指令字中的形式地址A就是操作数的真实地址EA,即EA=A 。
一条指令的执行: 取指令访存1次 执行指令访存1次 暂不考虑存结果 共访存2次
优点:简单,指令执行阶段仅访问一次主存, 不需专门计算操作数的地址。
缺点: A的位数决定了该指令操作数的寻址范围。 操作数的地址不易修改。

间接寻址

间接寻址:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址 所在的存储单元的地址,也就是操作数地址的地址,即EA=(A) 。
优点: 可扩大寻址范围,便于编制程序(用间接寻址可以方便地完成子 程序返回)。
缺点: 指令在执行阶段要多次访存

寄存器寻址

寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA =Ri,其操作数在由Ri所指的寄存器内。
一条指令的执行: 取指令访存1次 执行指令访存0次 暂不考虑存结果 共访存1次
优点: 指令在执行阶段不访问主存,只访问寄存器, 指令字短且执行速度快,支持向量/矩阵运算。
缺点: 寄存器价格昂贵,计算机中寄存器个数有限。

寄存器间接寻址

寄存器间接寻址:寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址, 即EA=(Ri) 。
一条指令的执行: (一次间接寻址)取指令访存1次 执行指令访存1次 暂不考虑存结果 共访存2次
特点: 与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。

偏移寻址

便宜寻址:以某个地址作为起点,形式地址 视为“偏移量”。

基址寻址

基址寻址:以程序的起始存放地址作为“起点”,将CPU中 基址寄存器(BR)的内容加上指令格式中的形式地址A, 而形成操作数的有效地址,即EA=(BR)+A。

注:基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。基址寄存器在执行过程中不可变,指令中的A是可变的。基址寄存器的选择可有专用和通用寄存器。

  1. 在程序执行 过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。
  2. 当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器, 但其内容仍由操作系统确定。

优点:可扩大寻址范围,故有利于多道程序设计,以及可用于编制浮动程序。

变址寻址

变址寻址:有效地址EA等于指令字中的形式地址A变址寄存器IX的内容相加之和, 即EA= (IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器。

注:变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变 (IX作为偏移量),形式地址A不变(作为基地址)

优点:在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便 可很容易形成数组中任一数据的地址,特别适合编制循环程序

相对寻址

相对寻址:把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址, 即EA=(PC)+A,其中A是相对于PC所指地址的位移量

优点:操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是 相差一个固定值,因此便于程序浮动(一段代码在程序内部的浮动)。 相对寻址广泛应用于转移指令

堆栈寻址

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

  1. 硬堆栈:寄存器堆栈,成本高
  2. 软堆栈:主存中划分,划算最常用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值