数据指针(DPTR)
是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针,也可以将外部RAM中地址的内容传送到内部RAM的地址所指向的内容中。
DPH和DPL的地址分别为83H、82H。
8位单片机,所有的寄存器硬件上都是8位模式访问;“所谓的的16位,都是2个8为拼起来的”
DPTR如
Mov DPTR,#1000H
把16位的片外地址送进来,分两次送进DPL和DPH两个8位寄存器
MOV DPL, #00H
MOV DPH, #0A0H
访问片外数据存储器的指令:
MOVX A,@DPTR读
MOVX @DPTR,A写
指令以16位DPTR为间址寄存器读片外RAM,可以寻址整个64KB的片外空间。指令执行时,在DPH中的高八位地址由P2口输出,在DPL中的低八位地址由P0口分时输出,并由ALE信号锁存在地址锁存器中。
DPTR的另一个作用是变址寻址,访问程序存储器,做查表指令:如:
以dptr为基址寄存器,将dptr的内容与累加器a的内容相加得到变址地址
movc a, @a+dptr ; (a)<-----((a)+(dptr))
jmp @A+DPTR;间接转移指令,将DPTR中的16位数和累加器A中的8位数相加,并直接送入PC,实现散转功能。对A、DPTR和标志位无影响。
|