51单片机分支程序实验

2023-12-24 05:52:53

一、实验内容

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将外部数据送到寄存器中,进而再比较数据。

文章来源:https://blog.csdn.net/m0_58837398/article/details/135125436
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。