51单片机分支程序实验
一、实验内容
1.基本要求
掌握51汇编语言调试技巧;实现三个数(R5,R6,R7)(初值为本人班级学号后六位,每两位以HEX格式填入一个寄存器)中找出最大和最小值,最大值存到R3,最小值存到R4;
2.扩展要求
将数据从R5,R6,R7改为内部数据存储器30H开始的连续多个数据;
3.思考要求
思考如果数据保存在外部数据存储器中应该如何解决。
二.理论分析或算法分析
基本要求
首先有R5,R6,R7三个数,要从中找出最大值和最小值,最大值放在R3当中,最小值放在R4当中。如果是人为的做,将其写在字上,我们可以一眼看出。
现在计算机即使很高级,都做不到像人一样可以一下知道谁大谁小,为了找到三个数中的最大值,计算机需要进行比较,在计算机中比较运算实际上是减法运算,如果为零,那这两个数就是相等;如果不为零,如果有借位位,就是前面小于后面那个数,反之,则是前面大于后面的数。为了实现比较,我们可以使用减法指令和比较指令来进行判断大小。
在计算机中模拟,假设最大值R3=R5,最小值R4=R5,使用R3中的内容R5与R6的内容进行比较,如果R3的内容大于R6的内容,则假设成立;
如果R3的内容小于R6的内容,则假设不成立,则需要将R3的内容替换成R6的内容。
R4的内容与R3的内容进行比较,假设成立,则目前为止,R3与R4的内容是最大值与最小值;
接下来,R3与R7进行比较,R3如果小于R7,则将R3的内容替换成R7的内容;R4与R7的内容进行比较;
刚开始假设R5是最小值,R7是最大值,如果不成立则进行修正,成立则R3与R4的内容保持不变。R5? R6?? R7 三个数字,
最大值:R3 = R5,R5与R6进行比较;
最小值:R4 = R7;
置R5,R6,R7三个数字为05,42,27
三.实现方法
源代码
四.实验结果分析
执行结果验证
输入05 54 27
? ? ? ?
?测试结果图
最大值R3=54? 最小值R4=05
遇到的问题
解决方式
1.不能将寄存器的内容赋值给另一个寄存器的内容,比较也不可以另个寄存器进行比较。
五、结论
在本次实验中,验证判断了三个数的最大值与最小值的比较,学会使用算法进行数据的比较大小,同时学会如何查看数据区的内容,进一步熟悉了伟福工具和窗口的平铺问题,进一步加深了对汇编语言的编写。
思考题:思考如果数据保存在外部数据存储器中应该如何解决。
若数据保存在外部数据存储器中,首先需要运用MOVX将外部数据送到寄存器中,进而再比较数据。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!