单片机汇编语言程序设计仿真实验
目的:1.掌握单片机仿真软件的使用。
2.掌握单片机汇编语言程序设计的基本方法。
3.掌握单片机编程、调试方法。
设计题目:
1、试编写程序。
统计内RAM 30H一50H单元中FFH的个数,并将统计结果存51H。
运行前程序:修改运行结果:
START:MOV 51H,#0
MOV R0,#20H
MOV R2,#20H
LOOP:MOV A,@R0
JNZ NEXT
INC 51H
NEXT:INC R0
DJNZ R2,LOOP
RET
2、从内RAM 30H单元开始存放着一组无符号数,其个数存在21H单元中。
试编写程序,找出其中最小的数,并将其存入20H单元中。
运行前程序:修改运行结果:
SECH:MOV R1,#30H
MOVX A,@R1
MOV B,A ;
MOV R2,#21H
SLOP:INC R1
MOVX A,@R1
CJNE A,B,SLP1
SLP1:JNC SLP2
MOV B,A
SLP2:DJNZ R2,SLOP
MOV R2,B
RET
3、设外RAM 2000H单元中有一个8位二进制数,试编程将该数的低四位屏蔽掉,并送回原存储单元。
运行前程序:修改执行程序:
MOV DPTR,#2000H
MOVX A,@DPTR
ANL A,#0F0
MOVX @DPTR,A
该程序在不同实验仪器上通过结果不同,应
该是编译环境问题。
主要原因在0F0后H
的显示选择。
4、试编写程序,求出内RAM20H单元中”1”的个数,并将结果存入21H单元。
运行前程序:修改执行程序:
MOV 21H,#0
MOV A,20H
LOOP: RLC A
JNC LOOP1
INC 21H
LOOP1:RET
5、试编一程序,分别统计在内部RAM的30H~50H单元的数据区中奇数和偶数的个数,并将奇数和偶数的个数分别存放在51H和52H单元中。
运行前程序:修改执行程序:
MOV 51H ,#0H
MOV 52H ,#0H
MOV R1 ,#30H
MOV R0 ,#21H
LOOP3:MOV A,@R1
ANL A,#01H
JZ LOOP1
INC 51H
INC R1
SJMP LOOP2
LOOP1:INC 52H
INC R1
LOOP2:DJNZ R0 , LOOP3
SJMP $
6、在2000H~2004H单元中,存有5个压缩的BCD码,试编程将它们转换成ASCII码,并存入2005H开始的连续单元中。
初始程序:
ORG 3000H
MOV DPTR,#2000H
MOV R0,#30H
MOV R7,#5
LOOP:MOVX A,@DPTR
MOV R5,A
ADD,A,#30H
MOV @R0,A
INC R0
MOV A,R5
SWAP A
ANL A,#0FH
ADD A,#30H
MOV @R0,A
INC R0
INC DPTR
DINZ R7,LOOP
LOOP1:MOV R1#30H
MOV R2,#10
MOV DPTR,#2005
LOOP2:MOV A,@R1
MOVX @DPTR,A
INC R1
INC DPTR
DINZ R2,LOOP2
END
修改执行程序:
软件实验小结:
本次实验中,我进一步掌握并理解了以MCS-51单片机为主的指令系统的功能及其应用,并且对课程中学到的寻址方式有了更深层次的理解。
在程序实践的过程中,掌握了单片机程序设计、编程、调试方法。
在这个过程中还熟悉了单片机仿真软件的应用,掌握了大部分基本的应用,这对以后工作中的项目开发、检测产生了有利影响。
更重要的是在之后的学习之路打下了坚实的基础,能更好地服务于下一步的硬件实验、课程设计和工程训练。