快捷搜索: 王者荣耀 脱发

计算机组成原理之操作数基本寻址方式

1.立即寻址 操作数=A,操作数在指令码中。 2.寄存器寻址 EA=R,操作数在寄存器中。 3.直接寻址 EA=A,操作数在存储器中。 4.寄存器间接寻址 EA=(R),操作数的地址在寄存器中,操作数在内存中。 5.间接寻址 EA=(A),指令字段中的形式地址A不是操作数D的真正地址,而是操作数地址的指示器,操作数在内存中。 6.偏移寻址类 EA=A+(R),是直接寻址和寄存器间接寻址方式的结合。 要求有两个地址字段,至少有一个是显示的。 容纳在一个地址字段中形式地址A直接被使用; 另一个地址字段,或基于操作码的一个隐含引用,指的是某个专用寄存器。 此寄存器的内容加上形式地址A就产生有效地址EA。 ①相对寻址 EA=A+(PC),隐含引用的专用寄存器是程序计数器(PC),当前PC的内容加上A的值。

操作数的地址是程序计数器PC的值加上一个偏移量,这个偏移量在指令地址码中给出。这种寻址方式下访问的操作数的地址是不固定的,而是相对于该指令的位置。指令中给出的偏移量可以是正值,也可以是负值,通常用补码表示。在汇编语言中为表示相对寻址方式,一般在PC外加上括号和偏移量的值。 如“100(PC)”“−200(PC)”等。例如,“ADD 100(PC),R1”表示源操作数在PC值加100的内存单元中,PC值由当前程序计数器给出,当前PC值本身也是内存地址(代码段地址),“100(PC)”即表示操作数存放在距现行指令100个单元处。 ②基址寻址 被引用的专有寄存器有一个存储器地址,地址字段含有一个相对于该地址的偏移量。 寄存器的引用可以是显式,也可以是隐式。

操作数的地址为基址寄存器内容与形式地址(地址数值)相加得到内存地址。基址寄存器由指令给出,形式地址也由指令给出。这种寻址方式与变址寻址方式在计算上形式一样,但在使用目的上不一样。变址寻址方式用于数组元素操作;基址寻址方式用于程序定位和扩大寻址空间等问题,它面向系统。基址寄存器在计算机中也是被指定的,不是所有寄存器都能当基址寄存器使用。例如8086指令中指定BX和BP两个寄存器为基址寄存器。

③变址寻址 是操作数的地址是变址寄存器内容与形式地址(地址数值)相加得到内存地址,变址寄存器由指令给出,形式地址也由指令给出。这种寻址方式适用于对一组数据进行访问。当访问一个数据元素之后,只要改变变址寄存器的值,该指令就可形成另一个数据元素的地址。在有的机器中指定某个寄存器为变址寄存器,大多数计算机中有多个寄存器可充当变址寄存器,如“300(R1)”“400(R3)”等。例如,“ADD R2,100(R1)”指令中,“100(R1)”就是变址寻址方式,此时R1寄存器充当变址寄存器,操作数地址等于R1的内容加上100。

7.隐含寻址 8.段寻址 7.堆栈寻址

经验分享 程序员 微信小程序 职场和发展