将RAM区的2000H~20FFH的内容传送到4000H~40FFH区

怎么写,用汇编语言?⑴、将RAM区的2000H20FFH的内容传送到4000H40FFH区?

ORG 0000H
LJMP MAIN
ORG 0080H
MAIN: MOV R0,#00H
MOV DPTR,#2000H ;将2000H地址送DPTR
LOO1: MOV A,#01H
MOVX @DPTR,A ;将数值0送(DPTR)里的地址空间
INC DPTR ;DPTR+1
INC R0 ;字节数+1
CJNE R0,#00H,LOO1 ;不到FF个字节在清0
MOV R2,#20H ;源首地址
MOV R3,#00H
MOV R4,#40H ;目的地址
MOV R5,#00H
MOV R6,#1FH ;字节数
MOV R7,#0FFH
SE22: MOV DPL,R3
MOV DPH,R2 ;建立源地址首址
MOVX A,@DPTR ;取数
MOV DPL,R5
MOV DPH,R4 ;目的地首址
MOVX @DPTR,A ;传送
CJNE R3,#0FFH,LO42
INC R2
LO42: INC R3 ;源地址加1
CJNE R5,#0FFH,LO43
INC R4
LO43: INC R5 ;目的地址加1
CJNE R7,#00H,LO44
CJNE R6,#00H,LO45 ;字节数减1
LOOP: SJMP LOOP
NOP
LO44: DEC R7
SJMP SE22
LO45: DEC R7
DEC R6
SJMP SE22
END