89C51单片机汇编程序题
编程实现:把内部RAMR0-R7内容传递到20H-27H单元求程序(用循环做)能说一下思路吗?或者注释一下,ADD那句以下没看懂。。。...
编程实现:把内部RAM R0-R7内容传递到20H-27H单元
求程序(用循环做)
能说一下思路吗?或者注释一下,ADD那句以下没看懂。。。 展开
求程序(用循环做)
能说一下思路吗?或者注释一下,ADD那句以下没看懂。。。 展开
2个回答
展开全部
MOV 20H,R0 ;R0、R1要作为指针,所以内容直接转存到20H、21H
MOV 21H,R1
MOV A,PSW ;RS1,RS0的值代表了当前寄存器组中R0的绝对地址
ANL A,#18H ;取当前寄存器组的绝对地址
ADD A,#2H ;指针指向R2,R0、R1已经处理过了
MOV R0,A ;把当前寄存器组R2的地址送R0,设置指向寄存器的指针
MOV R1,#22H ;设置目标地址指针指向22H
M1: MOV A,@R0 ;22H以后依据题意使用循环,寄存器的内容送A
MOV @R1,A ;A的内容送目标地址
INC R0
INC R1
CJNE R1,#28H,M1 ;R1等于28,所有数据传送完
SJMP $
由于RS1、RS0设计在PSW.4和PSW.3,因此屏蔽了别的标志位以后,剩下的值就是选中的工作寄存器组的R0的绝对地址。有了绝对地址,就可以使用间接寻址编出循环程序传送数据。
你最好上机模拟运行一下这段程序,仔细调试,就能看懂了。
MOV 21H,R1
MOV A,PSW ;RS1,RS0的值代表了当前寄存器组中R0的绝对地址
ANL A,#18H ;取当前寄存器组的绝对地址
ADD A,#2H ;指针指向R2,R0、R1已经处理过了
MOV R0,A ;把当前寄存器组R2的地址送R0,设置指向寄存器的指针
MOV R1,#22H ;设置目标地址指针指向22H
M1: MOV A,@R0 ;22H以后依据题意使用循环,寄存器的内容送A
MOV @R1,A ;A的内容送目标地址
INC R0
INC R1
CJNE R1,#28H,M1 ;R1等于28,所有数据传送完
SJMP $
由于RS1、RS0设计在PSW.4和PSW.3,因此屏蔽了别的标志位以后,剩下的值就是选中的工作寄存器组的R0的绝对地址。有了绝对地址,就可以使用间接寻址编出循环程序传送数据。
你最好上机模拟运行一下这段程序,仔细调试,就能看懂了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询