计算机组成原理学习笔记——指令如何寻址

一、何为指令的寻址方式

  • 指令的寻址方式是指寻找指令或操作数有效地址的方式,也就是确定本条指令的数据地址下一条待执行指令的地址的方式。寻址分为指令寻址数据寻址
  • 指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址 (A),形式地址结合寻址方式可以计算出操作数在存储器中的真实地址,这种地址称为有效地址 (EA)
  • (A) 表示地址为 A 的数值,A 既可以是寄存器编号,也可以是内存地址;所以 (A) 可以是寄存器中的数值,也可以是内存单元中的数值。EA=(A)表示有效地址为地址 A 中的数值。

1、指令寻址

  • 寻找下一条待执行的指令称为指令寻址,有顺序寻址和跳跃寻址两种方式。
  • 1)顺序寻址:通过程序计数器(PC)加 1 (个指令字长),自动形成下一条指令的地址。
  • 2)跳跃寻址:
  • 跳跃,指下一条指令的地址码不由程序计数器给出,而由本条指令给出下一条指令地址的计算方式。
  • 是否跳跃可能受到状态寄存器和操作数的控制,跳跃到的地址分为绝对地址和相对地址,绝对地址指由标记符直接得到,相对地址指相对于当前指令地址的偏移量;跳跃的结果是当前指令修改 PC 值,所以下一条指令仍是由 PC 给出。

2、数据寻址

  • 寻找操作数地址称为数据寻址,由于数据寻址的方式多,所以通常在指令中设一个字段用于区别数据寻址方式,该字段称为寻址特征,因此通常指令的格式如下:
    在这里插入图片描述

二、数据寻址

  • 常见的数据寻址方式有:隐含寻址、立即数寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、相对寻址、基址寻址、变址寻址和堆栈寻址,共 10种方式。

1、隐含寻址

  • 指的是指令中不明显给出操作数的地址,而是隐含操作数的地址。如单地址指令。
    隐含寻址的优点是有利于缩短指令字长,缺点是需增加存储操作数或隐含地址的硬件
    在这里插入图片描述

2、立即数寻址

  • 也叫立即寻址,该类型的指令的地址字段指出的不是操作数地址,而是操作数本身,即立即数,通常用补码表示。
  • 优点是指令在执行阶段无需访存,指令执行时间缩短;缺点是立即数的位数限制了数的范围
    在这里插入图片描述

3、直接寻址

  • 指指令中的地址字段给出的不是形式地址,而是操作数的真实地址,即 EA=A
  • 优点是简单,指令执行时只需一次访存,不需要专门计算操作数的地址;缺点就是 A 的位数限制了操作数的寻址范围,操作数的地址不易修改
    在这里插入图片描述

4、间接寻址

  • 指指令地址的地址字段给出的是操作数有效地址所在的存储单元的地址,即是操作数地址的地址,EA=(A)。间接寻址可以是一次间接寻址,也可以是多次间接寻址。
  • 优点是扩大寻址范围;缺点就是指令执行时需要多次访存,由于访存速度慢,因此这种寻址方式不常用。
    在这里插入图片描述

5、寄存器寻址

  • 指指令中直接给出操作数所在的寄存器的编号,即EA = Ri
  • 寄存器寻址的优点是指令执行阶段不访问主存,访问寄存器,因此缩短指令字长,提高执行速度;缺点是寄存器价格昂贵寄存器数量有限
    在这里插入图片描述

6、寄存器间接寻址

  • 指寄存器给出的不是操作数本身,而是操作数所在的主存单元的地址,即 EA=(Ri)
  • 比一般间接寻址速度快,但在指令执行阶段需要访存
    在这里插入图片描述

7、相对寻址

  • 指把程序计数器的内容加上指令格式种的形式地址形成操作数的有效地址,即 EA=(PC)+A,
  • 其中 A相对于当前指令地址的位移量,可正可负,补码表示,操作数寻址范围由 A 决定
    优点是操作数的地址不是固定的,随 PC值变化而变化,且与指令地址之间总是相差一个固定值,因此利于程序浮动;相对寻址广泛用于转移指令
    在这里插入图片描述

8、基址寻址

  • 将 CPU 种基址寄存器(BR)的内容加上指令格式种的形式地址 A 而形成操作数的有效地址,即EA = (BR) + A。基址寄存器可以是专用寄存器,也可以是通用寄存器。基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定,主要用于解决程序逻辑空间和存储器物理空间的无关性;在程序执行过程种,基址寄存器种的内容不变,形式地址可变。采用通用寄存器作基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但内容仍由操作系统确定。
  • 基址寻址的优点是扩大寻址范围,用户不必考虑自己的程序存于主存的哪个空间区域,利于多道程序设计,并可以用于编制浮动程序,但偏移量位数较短
    在这里插入图片描述

9、变址寻址

  • 有效地址 EA 等于指令字种的形式地址 A 与变址寄存器 IX 的内容之和,即 EA = (IX) + A,寄存器的选择同基址寻址方式。变址寄存器是面向用户的,在程序执行过程种,变址寄存器种的内容可由用户改变,形式地址 A 不变,因此与上面的基址寻址方式相反,用寄存器的值作为偏移量,形式地址 A 作为基址
  • 优点就是扩大寻址范围适合编制循环程序,偏移量位数足够表示整个存储空间。
    在这里插入图片描述
  • 基址寻址主要用于为多道程序或数据分配存储空间,变址寻址主要用于处理数组问题

10、堆栈寻址

  • 堆栈是存储器或专用寄存器中一块特定的、按先进先出原则管理存储区,该存储区中读/写单元的地址用一个特定的寄存器给出,该寄存器称为堆栈指针(SP)。堆栈分为硬堆栈和软堆栈
  • 寄存器堆栈称为硬堆栈,成本较高,不适合做大容量堆栈;从主存中划出一段区域用作堆栈,比较经济,这种方式的堆栈称为软堆栈。
  • 采用堆栈结构的计算机系统中,大部分指令表面上都表现为无操作数指令形式,因为操作数地址都隐含使用了 SP。通常情况,在读/写堆栈中的一个单元的前后件都伴有自动完成 SP 内容的增量和减量的操作。
    在这里插入图片描述
    上一篇
    下一篇
发布了184 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/104994318
今日推荐