51单片机实验逆序存储汇编代码
实验目的:
(1) 熟练掌握循环程序设计的基本方法
(2) 熟练掌握单片机外部存储空间的访问方法
实验内容:
- 向起始地址为SRC的片内存储中,顺序写入NUM个单字节数(数值不限),并以$字符(ASCII码)结尾。
- 从SRC中,向起始地址为DEST的片外存储中,逆序拷贝之前存储的NUM个单字节数,并以$字符结尾。
- 将上述两个操作写成两个子程序。
运行结果截图:
打开memory窗口,输入D:0xXX即可查看内部数据RAM内容,输入X:0xXXXX即可查看外部数据RAM内容,输入C:0xXXXX即可查看程序存储器内容。
片内RAM
片外RAM
代码:
ORG 0000H
LJMP MAIN
ORG 2000H
MAIN:
SRC DATA 30H
DEST XDATA 2000H
NUM DATA 20H
MOV A,#01H
MOV R0,#SRC //保存SRC起始地址
MOV DPTR,#DEST //保存DEST起始地址
MOV R2,#NUM //保存字节数量
MOV R3,#NUM //存入片内或者片外RAM都要用,所以保存两次
ACALL SAVE
DEC R0 //SAVE子程序中R0最后多加了一次,要减一
ACALL RESAVE
SJMP $
SAVE: //向片内RAM存储
MOV @R0,A
INC R0
ADD A,#01H
DJNZ R2,SAVE
ret
RESAVE: //逆序向片外RAM存储
MOV A,@R0
DEC R0
MOVX @DPTR,A
INC DPTR
DJNZ R3,RESAVE
ret