福建师范大学MCU作业汇编程序设计进阶.docx
《福建师范大学MCU作业汇编程序设计进阶.docx》由会员分享,可在线阅读,更多相关《福建师范大学MCU作业汇编程序设计进阶.docx(9页珍藏版)》请在冰豆网上搜索。
![福建师范大学MCU作业汇编程序设计进阶.docx](https://file1.bdocx.com/fileroot1/2022-12/12/1d3ea1bf-1d9f-475a-9436-64192c6d8e37/1d3ea1bf-1d9f-475a-9436-64192c6d8e371.gif)
福建师范大学MCU作业汇编程序设计进阶
实验报告3汇编程序设计-进阶
实验目的
1、熟悉51单片机的指令系统,掌握汇编语言程序的设计方法,掌握开发的调试方法。
实验环境
WAVE6000
内容与步骤
(1)在指定缓冲区查找最大值
(2)在指定缓冲区查找最小值
(3)在指定缓冲区计算平均值
(4)一位十六进制数转换成ASC1I码
(5)一位十六进制数转换8段式数码管显示码
(6)多分支转移(散转)程序
过程分析
通过编程前画出流程图,使编写起来更简单,更快速。
结果总结
通过本次实验,加深了我对汇编指令的理解。
以及流程图的使用大大提高了编程效率。
思考题
如何采RET指令实现的多分支程序。
RET 是子程序返回指令,功能是从堆栈中取出断电送给程序计数器
PC,使程序从断点处继续执行。
所以在编写多分枝程序时,调用子程序后,必须使用返回指令(如RET
)才能返回到主程序。
附录
(1)在指定缓冲区查找最大值
说明:
将最大值MAX存放在内存单元40H中
缓冲区地址从50H开始。
;-------------在指定缓冲区查找最大值----------
LENEQU20H
MAXEQU40H
VALUEEQU10H
MOVR0,#050H
MOVMAX,@R0
MOVLEN,#5
FIND:
MOVVALUE,@R0
MOVA,VALUE
CLRC
SUBBA,MAX
JCNEXT
MOVMAX,VALUE
NEXT:
INCR0
DJNZLEN,FIND执行前:
执行后:
(2)在指定缓冲区查找最小值
说明:
将最小值MIN存放在内存单元40H中
缓冲区地址从50H开始。
;-------------在指定缓冲区查找最小值-------------
LENEQU20H
MINEQU40H
VALUEEQU10H
MOVR0,#050H
MOVMIN,@R0
MOVLEN,#5
FIND:
MOVVALUE,@R0
MOVA,VALUE
CLRC
SUBBA,MIN
JNCNEXT
MOVMIN,VALUE
NEXT:
INCR0
DJNZLEN,FIND
执行前:
执行后:
(3)在指定缓冲区计算平均值
说明:
将商放入TEMP_1中,余数放入TEMP_2中。
缓冲区地址从50H开始。
LENEQU30H
TEMP_1EQU31H
TEMP_2EQU32H
MOVTEMP_1,#00H
MOVTEMP_2,#00H
MOVLEN,#05H
MOVR0,#50H
CLRC
LOP:
ADDCA,@R0
INCR0
DJNZLEN,LOP
MOVB,#5
DIVAB
MOVTEMP_1,A
MOVTEMP_2,B
执行前:
执行后:
(4)一位十六进制数转换成ASC1I码
说明:
将一个十六进制数存入A中,小于10的+30H,大于等于10的+37H。
MOVA,#00BH
CJNEA,#0AH,NEXT
NEXT:
JCASC
ADDA,#37H
SJMPLOP
ASC:
ADDA,#30H
LOP:
SJMPLOP
执行前:
执行后:
教师评阅:
成绩:
注:
老师如已阅,方便的话能否通知!