数据指针(DPTR)是80C51中一个功能比较特殊的寄存器。从结构DPTR是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针。
MOVX A,@DPTR读
指令以16位DPTR为间址寄存器读片外RAM,可以寻址整个64KB的片外空间。指令执行时,在DPH中的高八位地址由P2口输出,在DPL中的低八位地址由P0口分时输出,并由ALE信号锁存在地址锁存器中。
MOVX @DPTR,A写
DPTR的另一个作用是变址寻址,访问程序存储器,做查表指令:如:
以dptr为基址寄存器,将dptr的内容与累加器a的内容相加得到变址地址
movc a, @a+dptr ; (a)<-----((a)+(dptr))