2022年2022年汇编软件实验学生成绩输入 .pdf
-
资源ID:33375359
资源大小:49.10KB
全文页数:4页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年2022年汇编软件实验学生成绩输入 .pdf
1 微机原理实验报告实验任务:一个学生的信息包括姓名、班级、学号(班内序号)、成绩。试编写程序实现以下功能:(1)能录入学生成绩(十进制形式) ;提示:输入形如: tom 205 16 95回车,每名学生用一行;选择一个特殊符表示输入结束(2)能按要求(如班内序号或成绩)进行排序显示;(3)能统计平均成绩;(4)能按分数段统计人数,不及格、6070、7080、8090、90100 各分数段的人数。实验实现过程与方法:将输入的学生信息保存在一个一维数组中,在数据段中变现为:STUDENT DB 256 DUP( );存储学生信息在信息的存储过程中直接把输入的字符串存储至STUDENT 中,姓名,班级,班内序号,成绩各属性之间以空格分开,来标识不同的属性。每一个功能都用一个子程序来完成,在主程序中直接调用实现相应的功能。所以主程序为:CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,100H CALL INPUT_PRO ;调用输入子程序CR MOV DX,OFFSET MESSAGE MOV AH,09H INT 21H CALL DISPLAY_PRO ;显示学生输入信息CR CALL NUMBERSORT_PRO ;按学号升序排列CALL SUM_PRO ;求出成绩总和CALL GRADESORT_PRO ;按成绩降序排列CALL AVERAGE_PRO ;调用平均成绩子程序, 并以字符串显示出来CALL THEGRADE_PRO ;各个成绩段的人数统计MOV AH,4CH INT 21H CODE ENDS END START 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 2 其中 CR是一个宏,用来实现回车换行的功能,INPUT_PRO 实现成绩等学生信息的输入并存储起来, DISPLAY_PRO 用来在窗口显示学生的信息,NUMBERSORT_PRO 是按学生班内序号由小到大排序,GRADESORT_PRO是按学生成绩由大到小排序,AVERAGE_PRO是求出学生的平均成绩并以字符串的形式显示出来,THEGRADE_PRO则是最后用来统计各个分数段的学生的人数。下面来介绍各个子程序相应的算法及流程图:输入子程序:输入形如: tom 205 16 95 回车,每名学生用一行;选择一个特殊符表示输入结束的 INPUT_PRO,给每一个学生在STUDENT 中划分 14 字节用来存储学生信息,STUDENT0-STUDENT2字节用来存学生姓名, STUDENT4-STUDENT6用来存学生的班级,STUDENT8-STUDENT9用来存班内序号, STUDENT11-STUDENT13用来存储学生成绩。剩余的存储空间存储的都是空格,以把各个属性分开来, 用于后面把各要素显示出来。 一个学生信息依顺序输入并存储,然后循环, 用输入的字符判断是否继续循环。 为了后面的判断, 所有信息输出完之后在STUDENT 末尾加一个回车0DH 显示子程序:使用 02H中断显示字符, 把一个 STUDENT 中的信息显示出来, 一个学生显示完之后判断后面学生的第一个字符是否是0DH ,如果不是就继续显示,并且学生数加1,学生数的初值设为1,否则结束循环,退出该子程序。学号排序子程序:由于学号是按字符的形式存入STUDENT 中的,所以可以直接进行比较比较STUDENT8 和 STUDENT9,若学生只有一位即下一位的第一位是0DH ,结束程序,否则先比较 STUDENT8 表示十位数,若相等再继续比较STUDENT9,即采用冒泡排序方法重新对 STUDENT 排序,排序结束后调用显示子程序显示出排序结果流程图:成绩排序子程序:先调用求和子程序SUM_PRO把成绩字符转换为十进制数保存在SCORES 中,把总和保存在 SUM 中,从开始比较 SCORES 中的数,若前一个比后一个小则交换,采用冒泡排序,比较完之后调用显示子程序显示排序结果流程图:学生数加1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 3 求均值子程序:由求和子程序求出总和SUM ,又已知学生的总数STUDENTNUMBER便可以直接求出平均值,再调用 DEVDIV 转换为字符显示出来。流程图:成绩统计子程序:扫描学生信息的成绩,如果该学生信息的第一位为0DH ,退出程序,否则到成绩的第三位,若不为空格则90-100 即 A加 1,若第一位小于6,则小于 60 即 E加1,否则若第一位小于7,则 60-70 即 D加 1,否则若第一位小于8,则 70-80 即C加 1,否则若第一位小于9,则 80-90 即 B加 1,否则 90-100 加 1 流程图:实验结果:下面以一个例子来展示整个程序执行过程:姓名班级班内序号成绩jsd 243 10 78 n 223 00 59 cdfd 234 18 98 dsop 234 26 91 df 234 29 83 sa 675 09 80 oi 345 14 73 ieo 235 30 69 eod 245 05 100 输入的截图:输入后显示的截图按学号排序的截图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 4 按成绩排序 , 平均成绩及成绩统计的截图:实验总结:本次实验加深了对数据段数据存储的理解,让人印象深刻的跳转语句跳转范围,如果超出这个范围则可以用一个中转来实现整个跳转,也就是跳转两次。 实验过程中也碰到了很多麻烦, 比如循环跳不出去, 循环次数多了等等, 都通过单步执行得到解决,最终还是比较完整的解决了整个问题。收获还是非常多的, 使用各种跳转语句, 循环结构, 顺序结构的使用也还算是熟练了吧,某种程度上也算是激发了对汇编的兴趣,希望这次经历能够对以后产生很大的影响。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -