寻址模式

时间:2024-03-23 10:22:41

寻址模式(代码后补)

  1. 立即(数)寻址:指令中的形式地址部分,不是操作数的地址,而是操作数本身。
    特点:指令执行阶段CPU不访问主存,而形式地址的位数限制了立即数的范围。
  2. 直接寻址:指令中的形式地址部分就是操作数的实际地址。
    特点:在执行阶段访问了一次储存器,而形式地址的位数限制了指令操作数的寻址范围,地址不易修改。
  3. 隐含寻址:在指令中隐含着操作数的地址。
    如单地址的指令格式,就不是明显地在地址字段中指出第二操作数的地址,而是规定累加器ACC作为第二操作数,指令格式明显指出的仅是第一操作数的地址。因此,累加器ACC对单地址指令格式来说是隐含地址。
    隐含寻址的优点是有利于缩短指令字长;缺点是需增加硬件。
  4. 间接寻址:指令中的形式地址不是操作数的地址,而是操作数地址的地址,即间接寻址是相对于直接寻址而言的,指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。
    作用:扩大了寻址范围,便于编址转移程序。
  5. 寄存器寻址:指令中的形式地址直接指出寄存器的编号,操作数储存于寄存器中。特点:执行阶段不访问主存,只访问寄存器,执行速度快,可缩短指令字长。
  6. 寄存器间接寻址:指令中的形式地址为寄存器的编号,寄存器的内容是操作数的有效地址。
    特点:有效地址在寄存器中,操作数在储存器中,执行阶段访问主存便于编制循环程序。
  7. 基址寻址:隐式寻址:基址+形式地址;显式寻址:采用通用寄存器R0内容不变,形式地址可变。
    基址寻址是将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,EA=(BR)+A。其中基址寄存器既可采用专用寄存器,也可以采用通用寄存器。
    基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。
    基址寻址的特点是可扩大寻址范围(基址寻址的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序。
  8. 变址寻址:有效地址EA等于指令中的形式地址A与编制寄存器IX的内容相加之和,即EA=(IX)+A,其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
    变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)。
    变址寻址的优点是可扩大寻址范围(变址寄存器的位数大于形式地址A的位数),在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任意数据的地址,特别适合编制循环程序。
    显然,变址寻址与基址寻址的有效地址形成过程及其相似。但从本质上来讲,两者有较大区别。基址寻址主要用于为多道程序或数据分配存储空间,故基址寄存器的内容通常由操作系统和管理程序确定,在程序的执行过程中其值不可变,而指令字中的A是可变的;变址寻址主要用于处理数组问题,在变址寻址中,变址寄存器的内容是由用户设定的,在程序执行过程中,其值可变,而指令字中的A是不可变的。
  9. 相对寻址:有效地址为程序计数器PC的值与形式地址之和。相对寻址的优点是操作数的地址不是固定的,它随着PC的值得变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动,相对寻址广泛应用于转移指令。
    对于转移指令JMPA,当CPU从存储器中取出一个字节时,会自动执行(PC)+1->PC.若转移指令的地址为X,且占2个字节,在取出该指令后PC的值会增2,即(PC)=X+2,这样在执行完该指令后,会指定跳转到X+2+A的地址继续执行。
  10. 堆栈寻址:堆栈是存储器(或专用寄存器组)中一块特定的按“先进后出(LIFO)”原则管理的存储区,该存储区中被读、写单元的地址是用特定的寄存器给出的,该寄存器称为堆栈指针(SP)。堆栈可分为硬堆栈和软堆栈两种。
    寄存器堆栈又称为硬堆栈。寄存器堆栈的成本比较高,不适合做大容量的堆栈;而从主存中划出一段区域来做堆栈是最合算且最常用的方法,这种堆栈称为软堆栈。
    在采用堆栈结构的计算机系统中,大部分指令表面上都表现为为无操作数指令的形式,因为操作数地址都隐含使用了SP。通常情况下,在读写堆栈中的一个单元的前后都伴有自动完成对SP内容的增量或减量操作。
    寻址模式