目录
寻址方式有指令寻址和数据寻址两大类。
指令寻址
含义:寻找下一条将要执行的指令的地址。
形式地址(A):指令中的地址码字段并不代表操作数的真实地址。
有效地址(EA):用形式地址并结合寻址方式,来计算出操作数在存储器中的真实地址。
注:(A)表示地址为A的数值。A可以是寄存器编号或者是内存地址,相应地,(A)是寄存器中的数值或者是相应内存单元的数值。
EA=(A)表示地址A中的数值是有效地址。
顺序寻址方式
通过程序计数器(PC)不断加1,自动形成下一条指令的地址。
跳转寻址方式
数据寻址(操作数寻址方式)
需要解决的问题:如何才能找到指令所需要处理的数据,即操作数。
隐含寻址
含义:指令中的操作数或操作数地址隐含存放在特定的寄存器或主存单元中,不在指令的地址码字段给出。
优点:有利于缩短指令字长。
缺点:需增加存储操作数或隐含地址的硬件。
立即(数)寻址
指令的地址字段指出的不是操作码的地址,而是操作数本身,又称为立即数。
数据采用补码形式存放。
立即数只能出现在源操作数。
优点:指令在执行阶段不访问主存,指令执行时间最短。
缺点:指令的长度限制了立即数的范围。
直接寻址
含义:指令字中的形式地址A就是操作数的真实地址EA。
优点:指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址。
缺点:A的位数决定了指令操作数的寻址范围,操作数的地址不易修改。
间接寻址
寄存器寻址
含义:在指令字中直接给出操作数所在的寄存器编号,即EA=Ri,其操作数在由Ri所指的寄存器内。
优点:指令在执行阶段不访问内存,只访问寄存器,寄存器数量少,对应地址码长度较小,执行速度快。
寄存器间接寻址
含义:在寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri)。
比一般间接寻址速度快,但执行阶段仍然需要访问主存(因为操作数在主存中)。
注:只有SI、DI、BX和BP可作间址寄存器。
相对寻址
基准地址:程序计数器PC的内容。
位移量:指令格式中的形式地址A,用补码表示。
操作数的有效地址EA=(PC)+A。
基址寻址
含义:CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数有效地址,即EA=(BR)+A。
基址寄存器:BX或BP。
变址寻址
有效地址等于形式地址加上变址寄存器的内容。
变址寄存器:SI或DI。
堆栈寻址