更新时间:2023-02-09 15:04
以当前程序计数器pc的内容为基址,加上指令给出的一字节补码数(偏移量)形成新的pc值的寻址方式称为相对寻址。隐含引用的专用寄存器是程序计数器(PC),即EA=A+(PC),它是当前PC的内容加上指令字段中A的值。一般来说,地址字段的值在这种操作下被看成2的补码数的值。因此有效地址是对当前指令地址的一个上下范围的偏移,他基于程序的局部性原理。使用相对寻址可节省指令中的地址位数,也便于程序在内存中成块搬动。
直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址,这五种寻址方式属于存储器寻址,用于说明操作数所在存储单元的地址。由于总线接口单元BIU能根据需要自动引用段寄存器得到段值,所以这五种方式也就是确定存放操作数的存储单元有效地址EA的方法。有效地址EA是一个16位的无符号数,在利用这五种方法计算有效地址时,所得的结果认为是一个无符号数。除了这些基本的寻址方式外,还有固定寻址和I/O端口寻址等。
计算机中的寻址方式是非常重要的概念。所谓寻址方式就是寻找操作数的方法。只有找到相应存储单元中的操作数,才能进行相关操作。程序执行的过程其实就是不断地在存储单元中寻找操作数并对操作数进行特定操作的过程。一般来说,指令的寻址方式越多,意味着指令的功能也越强。
MCS-51单片机的寻址方式共有7种。分别为直接寻址、立即数寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。
8051单片机设有转移指令,分为直接转移指令和相对转移指令两种。相对转移指令需要采用相对寻址方式。此时指令的操作数部分给出的是地址的相对偏移量。在指令中以“rel”表示相对偏移量,rel为一个带符号的常数,可正可负(若rel为负,用补码表示)。一般将相对转移指令本身所在的地址称为源地址,转移后的地址称为目的地址,它们的关系为:
目的地址=源地址+rel
例如,指令:
SJMP rel
这条指令的机器码为80,rel,共两个字节,比如该指令所在的源地址为2000H,rel的值为54H,则转移后的地址为2000H+02+54H=2056H。