HFUT汇编实验:求一个班50名学生成绩的平均值、最大值和最小值,并将结果显示出来。

由题意,要求五十个同学的成绩,令成绩的范围是0~100,随机数生成50个数据:

46   30   39   68   16   66   35   18   40   56   52   57   82   98   44   74   83   79   96   95 77   54   63   43   31   11   25   85   13   86   53   47   42   2   6   80   51   88   34   87   97   70   91   45   41   22   15   64   14   55


分析:

        题目要求计算五十个同学成绩的平均值,求出最大值,最小值,不妨在主程序中计算平均值,使用子程序计算最大值、最小值,简化主程序的长度。

        首先在数据段中输入五十个同学的成绩,并为最大值、最小值留下空间,估算成绩之和最大为50*100=5000=1388h没有超过十六位,故使用无符号的字加法,需要把数据段中的字节数据符号扩展到十六位,再累加,用dx寄存器临时存放累加的成绩之和,用ax存放实际总成绩之和,除以学生总人数50,al寄存器存放计算的商,ah寄存器存放计算的余数。


主程序代码:


        首先利用堆栈的操作保护寄存器ax,bx的值,不影响主程序的代码,50个数比较找到最大数,只需要比较49次即可,令al寄存器为临时存储最大数的变量,依次递推和成绩数组后面的数比较,如果al大则继续比较,如果al小则让被比较的数作为al寄存器的值,不断迭代更新al的值,直到比较结束,al为最高成绩,存储到数据段中定义的变量max中,找到最高的成绩,最低成绩同理。


子程序代码cmp_max:


子程序代码cmp_min:

汇编学完了,总结收获记录日常,萌新请多指教~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值