计算机组成原理17-寻址方式

目录

一、指令寻址

二、数据寻址

1、立即寻址

2、直接寻址

3、隐含寻址

4、间接寻址

间接寻址编程

5、寄存器寻址

6、寄存器间接寻址

7、基址寻址

(1)采用专用寄存器作基址寄存器

(2)采用通用寄存器作基址寄存器

8、变址寻址

9、相对寻址

10、堆栈寻址


寻址方式分为指令寻址数据寻址两大类。

所谓寻址方式是指:确定本条指令操作数地址,下一条要执行指令指令地址

一、指令寻址

指令寻址分为顺序寻址跳跃寻址两种。

顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。

二、数据寻址

指令的地址码字段通常都不代表操作数的真实地址,把它称为形式地址,记作A。

操作数的真实地址称为有效地址,记作EA,它是由寻址方式形式地址共同来确定的。

1、立即寻址

立即寻址的特点是操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数本身,又称为立即数。数据是采用补码形式存放的。

优点在于只要取出指令,便可立即获得操作数,这种指令在执行阶段不必再访问存储器

A的位数限制了这类指令所能表述的立即数的范围。

2、直接寻址

直接寻址的特点是指令字中的形式地址A就是操作数的真实地址EA,即EA=A

它的优点是寻找操作数比较简单,也不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次。

缺点在于A的位数限制了操作数的寻址范围,而且必须修改A的值,才能修改操作数的地址。

3、隐含寻址

隐含寻址是指指令字中不明显地给出操作数的地址,其操作数的地址隐含在操作码或某个寄存器中

由于隐含寻址在指令字中少了一个地址,因此这种寻址方式的指令有利于缩短指令字长。

4、间接寻址

倘若指令字中的形式地址不直接指出操作数的地址,而是指出操作数有效地址所在的存储单元地址,也就是有效地址是由形式地址间接提供的,即为间接寻址,即EA=(A)

当多次间接寻址时,可用存储字的首位来标志间接寻址是否结束。当存储字首位是“1”时,表明还需继续访存寻址;当存储字首位为“0”时,标明该存储字即为EA。
优点:

  • 这种寻址方式与直接寻址相比,扩大了操作数的寻址范围,因为A的位数通常小于指令字长,而存储字长可与指令字长相等。
  • 另外它便于编制程序。只要在调用前先将返回地址存入子程序最末条指令的形式地址A的存储单元内,便可准确返回到原程序断点。

缺点:指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),致使指令执行时间延长。

间接寻址编程

5、寄存器寻址

在寄存器寻址的指令字中,地址码字段直接指出了寄存器编号,其操作数在寄存器内

由于操作数不在主存中,故寄存器寻址在指令执行阶段无须访存,减少了执行时间。

由于地址字段只需指明寄存器编号(计算机中寄存器数有限),故指令字较短,节省了存储空间。

6、寄存器间接寻址

寄存器中的内容不是操作数,而是操作数所在主存单元的地址号

与寄存器寻址相比,指令的执行阶段还需访问主存。因有效地址不是存放在存储单元中,故称其为寄存器间接寻址,它比间接寻址少访存一次。

7、基址寻址

(1)采用专用寄存器作基址寄存器

 

(2)采用通用寄存器作基址寄存器

 

基址寄存器可采用隐式的和显示的两种。

所谓隐式,是在计算机内专门设有一个基址寄存器BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征位反映出基址寻址即可。

显式在一组通用寄存器里,由用户名明确指出哪个寄存器用作基址寄存器,存放基地址。

基址寻址可以扩大操作数的寻址范围,因基址寄存器的位数可以大于形式地址A的位数。

当主存容量较大时,若采用直接寻址,因受A的位数限制,无法对主存所有单元进行访问,但采用基址寻址便可实现对主存空间的更大范围寻访。

用户可不必考虑自己的程序存于主存的哪一空间区域,完全可由操作系统或管理程序根据主存的使用状况,赋予基址寄存器内一个初始值(即基地址),便可将用户程序的逻辑地址转化为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域。

8、变址寻址

基址寻址主要用于为程序或数据分配存储空间,故基址寄存器的内容通常由操作系统或管理程序确定,在程序的执行过程中其值是不可变的,而指令字中的A是可变的。

在变址寻址中,变址寄存器的内容是由用户设定的,在程序执行过程中其值可变,而指令字中的A是不可变的。

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

9、相对寻址

相对寻址的有效地址是将程序计数器PC的内容与指令字中的形式地址A相加而成。

相对寻址常被用于转移类指令,转移后的目标地址与当前指令有一段距离,称为相对位移量,它由指令字的形式地址A给出,故A又称位移量。位移量A可正可负,通常用补码表示。

相对寻址的最大特点是转移地址不固定,它可随PC指的变化而变,因此无论程序在主存的哪段区域,都可正确运行,对于编写浮动程序特别有利

相对寻址也可与间接寻址配合使用。

10、堆栈寻址

堆栈寻址要求计算机中设有堆栈。堆栈既可用寄存器组(称为硬堆栈)来实现,也可利用主存的一部分空间作堆栈(称为软堆栈)。

堆栈的运行方式为先进后出或先进先出两种,先进后出型堆栈的操作数只能从一个口进行读或写。

堆栈寻址也可视为一种隐含寻址,其操作数的地址总被隐含在SP中。

堆栈寻址就其本质也可视为寄存器间接寻址,因SP可视为寄存器,它存放着操作数的有效地址。

猜你喜欢

转载自blog.csdn.net/swadian2008/article/details/112912938