指令的寻址方式

寻址方式是指寻找指令或操作数有效地址的方式,寻址方式分为指令寻址和数据寻址两大类。

指令中的地址码字段并不代表操作数的真实地址,这种地址成为形式地址A,由形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址EA

其中(A)代表地址为A的数值。

指令寻址和数据寻址:

  1.指令寻址:

    1)顺序寻址:通过程序计数器PC加一(一个指令字长),自动形成下一条指令的地址。

    2)跳跃寻址:通过转移类命令实现,下一条指令的地址不由PC自动给出,而是由当前指令给出指令地址的计算方式,跳跃的结果是当前的指令修改PC的值,所以本质上下一条指令仍通过PC给出

  2.数据寻址:

    数据寻址的方式较多,为区分各个方式,通常在指令字中设置一个字段,用指明属于那种寻址方式。

    

常见的数据寻址方式:

  1.隐含寻址:

    这种类型的指令不指明操作数的地址,而在指令中隐含操作数的地址

    优点:可以缩短指令字长,缺点:需要增加存储操作数或隐含地址的硬件。

    

  2.立即寻址:

    地址字段给出的不是操作数的地址,而是操作数本身,又称立即数,采用补码表示。

    优点:指令在执行阶段不访问主存,执行时间最短。缺点:A的位数限制了立即数的范围

    

  3.直接寻址:

    指令字的形式地址A是操作数的真实地址EA,及EA=A

    优点:简单,在执行阶段只访问一次主存。缺点:A的位数决定了操作数的寻址范围,操作数的地址不易修改

    

  4.间接寻址:

    指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在存储单元的地址,即是操作数地址的地址,即EA=(A)

    优点:可以扩大寻址范围。缺点:在指令的执行阶段要访问多次主存

     

  5.寄存器寻址:

    寄存器寻址是指指令字中直接给出操作数所在的寄存器编号,即EA=R,其操作数由R所指的寄存器中:

    优点:指令在执行阶段不用访问主存,由于寄存器数量少,对应的地址码长度少,执行速度快。

    缺点:价格昂贵,寄存器的数量有限。

    

  6.寄存器间接寻址:

    寄存器R中给出的不是操作数,而是操作数所在主存单元的地址,即EA=(R)

    优点:与一般的间接寻址相比速度更快。缺点:指令的执行阶段需要访问主存。

    

  7.相对寻址:

    相对寻址是把PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+  A

    相对寻址的操作数地址不是固定的,它随PC值的变化而变化,且指令地址之间总是相差一个固定值,因此便于程序的浮动。

    相对寻址被广泛的用于转移指令。

    

  8.基址寻址:

    基址寻址是CPU中的基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成的有效地址,即EA=(BR)+  A

    基址寄存器是面向操作系统的,其内容有操作系统或管理员确定,主要用于解决程序员逻辑空间与存储器物理空间的无关性

    

  9.变址寻址

    变址寻址是指有效地址EA,等于指令字中的形式地址A与变址寄存器IX的内容之和,即EA=(IX)+  A。IX为变址寄存器(专用)

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

    

 

变址寻址与基址寻址:

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

  变址寻址立足于用户,主要用于处理数组问题,在变址寻址中,变址寄存器的内容由用户确定,在程序执行过程中其值可以改变,而指令字中的A是不可变的。

九大数据寻址方式比较:  

   

 

posted @ 2022-04-19 09:34  风吹过半夏  阅读(3091)  评论(0编辑  收藏  举报