将外部数据存储器中首地址为1000H的连续存放的八个数与首地址为1010H的间隔存放的八个数进行交换。(以下地址为十六进制)
1000 1001 1002 1003 1004 1005 1006 1007
↓↑
1010 1012 1014 1016 1018 101A 101C 101F
这个程序我编了下,但是不知道对不对,电脑没在身边,用手机打的,麻烦高手指教下,而且感觉自己编的比较麻烦。。。。。我是将外地址1000H的内容先放到片内30H的内容里了,然后将外地址1010H的内容放到1000H内,之后再将30H的内容放到1010H内。
MOV DPTR, #1000H
MOV R7, #10H
MOV R6, #00H
MOV R2, #8
MOV R0, #30H
LOOP: MOVX A, @DPTR
MOV @R0,A ;将外地址1000H的内容放到内存储器内
PUSH DPH
PUSH DPL
MOV DPH, R7
MOV DPL,R6 ;将(DPTR)=1010H
MOVX A,@DPTR
POP DPH
POP DPL
MOVX @DPTR, A ;将首地址1010H的内容放到1000H
INC DPTR
PUSH DPH
PUSH DPL
MOV A,@R0 ;将片内存储器(即外地址1000H)的内容放到A内
MOV DPH, R7
MOV DPL, R6
MOVX @DPTR, A ;将外地址1000H的内容放到外1010H中
INC DPTR
MOV R7,DPH
MOV R6,DPL
POP DPL
POP DPH
DJNZ R2,LOOP