计算机组成原理:4.2指令的寻址方式

4.2指令的寻址方式

思维导图

在这里插入图片描述

指令寻址和数据寻址

指令寻址

  • 顺序寻址

    • (PC)+1,自动形成下一条指令地址
  • 跳跃寻址

    • 转移指令给出

数据寻址

  • 定义:在指令中表示一个操作数的地址方式,并用这种方式得到操作数的地址
  • 指令格式:

常见的寻址方式

隐含寻址

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

立即(数)寻址

  • 这种指令的地址字段指出的不是操作数的地址,而是操作数的本身,又称立即数,数据采用补码形式存放。
  • 优点是指令在执行阶段不访问主存,指令执行讨间最短;
    缺点是A的位数限制了立即数的范围。

直接寻址

  • 指令字中的形式地址A是操作数的真实地址EA,即EA=A,
  • 优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址
    缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改

间接寻址

  • 间接寻址是相对于直接寻址而言的,指令的地址字段给出的形式地址不是操作数的真正地址,是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)

  • 间接寻址也可多次间接寻址

  • 优点是可扩大寻址范围(有效地址EA的位数大于形式地址A的位数),便于编制程序(用间接寻址可方便地完成子程序返回);
    缺点是指令在执行阶段要多次访存(一次间接寻址需两次访存,多次间接寻址需根据存储字的最高位确定访存次数)。
    由于访问速度过慢,这种寻址方式并不常用。一般问到扩大寻址范围时,通常指的是寄存器间接寻址

寄存器寻址

  • 寄存器寻址是指在指令字中直接给出操作数所在的寄存器编号,即EA=R,其操作数在由R所指的寄存器内
  • 优点是指令在执行阶段不访问主存,只访问寄存器,因寄存器数量较少,对应地址码长度较小,使得指令字短且因不用访存,所以执行速度快,支持向量矩阵运算;
    缺点是寄存器价格昂贵,计算机中的寄存器个数有限。

寄存器间接寻址

  • 寄存器间接寻址是指在寄存器R1中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(R)
  • 与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存
    (因为操作数在主存中)

相对寻址

  • PC+形式地址A(补码表示)

基址寻址

  • EA = (BR)+A

  • BR:基址寄存器

    • 可采用

      • 专用寄存器

        • 专用寄存器包括程序计数器PC、堆栈指示器SP和标志寄存器FR,它们的作用是固定的,用来存放地址或地址基值
      • 通用寄存器

        • 通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果
    • 面向操作系统,其内容有操作系统或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关性

  • 优点:扩大寻址范围,

  • 优点:有利于多道程序设计,并可用于编制浮点程序

    • 原因:用户不用考虑自己的程序存于内存的哪一个空间区域

变址寻址

  • EA = (IX)+ A
  • IX:变址寄存器,可用通用寄存器作为
  • 变址寄存器是面向用户的,执行过程中IX的内容可以由用户改变
  • 优点:扩大寻址范围

堆栈寻址

  • 堆栈是存储器(或专用寄存器组)中一块特定的、按后进先出(LFO)原则管理的存储区

  • 分类

    • 硬堆栈:寄存器堆栈
    • 软堆栈:主存划出的区域

X86汇编指令入门

相关寄存器

寻址模式和内存分配

常用指令

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wvdon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值