
AT8xc51Rx2
7.1
汇编语言
;使用双数据指针块移动
;修改DPTR0 , DPTR1 , A和PSW
;注意: DPS退出的进入状态相反
;除非额外INC AUXR1加
;
00A2 AUXR1 EQU 0A2H
;
0000 909000MOV DPTR , #源;源地址
0003 05A2 INC AUXR1 ;开关数据指针
0005 90A000 MOV DPTR , # DEST ; DEST地址
0008 LOOP :
0008 05A2 INC AUXR1 ;开关数据指针
000A E0 MOVX A,@ DPTR ;获得从源代码字节
000B A3 INC DPTR ;增量源地址
000C 05A2 INC AUXR1 ;开关数据指针
000E F0 MOVX @ DPTR , A;写字节到dest
000F A3 INC DPTR ;增量DEST地址
0010 70F6JNZ LOOP ;检查0终结
0012 05A2 INC AUXR1 ; (可选)恢复DPS
INC是短( 2个字节)和快速( 12个时钟周期)的方式来操作,在SFR AUXR1的DPS位。
但是请注意, INC指令不直接强制DPS位到特定的状态,
但简单地切换它。在简单的例程,如块移动的例子中,只有一个事实,即DPS
被触发以正确的顺序重要,而不是它的实际值。换句话说,块移动
日常工作同DPS是否是在进入'0 '或' 1 ' 。注意,如果没有最后的指令
灰(INC AUXR1 ) ,该例程将与DPS退出在相反的状态。
13
4113C–8051–01/08