以一个基地址加上一个偏移量地址形成操作数地址的寻址方式称为变址寻址。变址寻址用于访问程序存储器中的一个字节,该字节的地址是:基址寄存器(DPTR或PC)的内容与变址寄存器A中的内容之和。
基址寄存器加变址寄存器间接寻址方式,是MCS-51指令集所独有的。它是以程序计数器PC或数据指针DPTR作为基址寄存器(数据作为基地址),以累加器A作为变址寄存器(A中的数据作为偏移量地址),这两者内容之和形成的16位程序存储器地址作为操作数地址。基址加变址寻址只能对程序存储器中数据进行操作,由于程序存储器是只读的,因此该寻址只有读操作而无写操作,此种寻址方式对查表访问特别有用。变址寻址方式只用于访问程序存储器ROM指令和变址寻址转移指令。由于ROM是只读存储器,所以访问ROM就是读ROM中的数据,指令助记符为MOVC。
本寻址方式的指令只有3条:MOVC A,@A+DPTR、MOVC A,@A+PC和JMP @A+DPTR,前两条指令适用于读程序存储器中固定的数据,如表格处理;第三条为散转指令,A中内容为程序运行后的动态结果,可根据A中内容的不同,实现向不同程序入口处的跳转。
图3-6 变址间接寻址操作
例3-5:设DPTR=2000H,A=10H,如图3-6所示。(www.xing528.com)
MOVC A,@A+DPTR;A←((A)+(DPTR))
该指令的功能是将ROM中的数据传送到A,它的执行过程如图3-7所示。这里假设执行指令前,A的内容为08H,DPTR中的内容为0146H。执行指令后,A中的内容被地址为((A)+(DPTR))的ROM单元中的数据(已知为7FH)代替。
图3-7 变址寻址示意图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。