编写一程序如何实现将1000H单元开始的100个单元的数据转移到2000H开始的单元中?
编程代码如下:
ORG 0000H
MOV DPTR,#1000H ;给源数据块地址指针DPTR赋初值
MOV P2, #20H ;给目的数据块地址指针P2和R0赋初值
MOV RO,#00H
LOOP: MOVX A, @DPTR .
MOVX @RO, A .
INC DPTR
INC RO
CJNE RO,#64H, LOOP
SJMP $
扩展资料
MCS-51单片机主要由下列部件组成:1个8位CPU;1个片内振荡器及时钟电路;4KB ROM程序存储器,256BRAM;21个特殊功能寄存器。
2个1 6位定时/计数器;4个8位并行I/O口及1个可编程全双工串行接口;可寻址64KB的外部程序存储器空间;可寻址64KB的外部数据存储器空间;5个中断源、两个优先级中断嵌套中断结构。
MCS-51单片机内部有两个16位可编程的定时/计数器,简称定时器0 (T0) 和定时器1 (T1) 。它们分别由方式寄存器TMOD、控制寄存器TCON和数据寄存器TH0、TLO, TH1、TL1组成。
低优先级中断源可被高优先级中断源所中断,而高优先级中断源不能被任何中断源所中断;一种中断源(不管是高优先级还是低优先级) 一旦得到响应,与它同级的中断源不能再中断它。当同时收到几个同一优先级的中断时,响应哪一个中断源取决于内部查询顺序。
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: MOV DPTR, #1000H ;定义单元的首地址
MOV R1, #2000H ;定义被转移单元的首地址
MOV R2,#64H ;100个单元的数据,用16进制表示
LOOP: MOVX A,@DPTR
MOVX @R1,A
INC DPTR
INC R1
DJNZ R2,LOOP
SJMP $
ORG 0000H
SJMP MAIN
ORG 0100H
MAIN: MOV R0, #1000H ;定义单元的首地址
MOV R1, #2000H ;定义被转移单元的首地址
MOV R3,#64H ;100个单元的数据,用16进制表示
LOOP: MOV DPTR,R0
MOVX A,@DPTR
MOV DPTR,R1
MOVX @DPTR,A
INC R0
INC R1
DJNZ R3,LOOP
SJMP $