一种是16位片外寻址,通过 MOVX @DPTR 系列指令实现,即借助16位的DPTR指针来访问64kB空间的片外数据存储器。此时P2口输出高8位地址信号,P0口分时输出低8位地址信号、输入/输出8位数据信号。
一种是8位片外寻址(页寻址),通过 MOVX @Ri 系列指令实现,即借助8位的Ri指针来访问当前256B页面的片外数据存储器。此时P2口的状态决定了高8位地址信号(即所谓的页面号),P0口分时输出8位页面内地址信号、输入/输出8位数据信号。
所以你应该明白,对于你所提的需求,如果限制了不能使用DPTR,那么显然应该用第二种方法,即手工 *** 作P2口切换页面,之后通过 MOVX @Ri 系列指令来搬运数据。
例如要将X:4800h的16字节搬运到X:EEF0h开始的16字节空间内,你可以将R0初始化为00h、R1初始化为F0h,每次先将P2置为48h,MOVX A,@R0,然后将P2置为EFh,MOVX @R1, A,然后R0、R1累加,以此循环16次。Rn:当前选定的寄存器区中的8个工作寄存器R0~R7,即n=0~7
Ri:当前选定的寄存器区中的2个寄存器R0,R1,既i=0,1主要用于间接寻址
两者不互相包含,前者用于存储立即数,后者用于存储间接地址
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)