汇编软件实验学生成绩输入.docxVIP

  • 10
  • 0
  • 约2.54千字
  • 约 4页
  • 2019-10-19 发布于江西
  • 举报
PAGE 2 微机原理实验报告 实验任务: 一个学生的信息包括姓名、班级、学号(班内序号)、成绩。试编写程序实现以下功能: (1)能录入学生成绩(十进制形式);提示:输入形如:tom 205 16 95回车,每名学生用一行;选择一个特殊符表示输入结束 (2)能按要求(如班内序号或成绩)进行排序显示; (3)能统计平均成绩; (4)能按分数段统计人数,不及格、60~70、70~80、80~90、90~100各分数段的人数。 实验实现过程与方法: 将输入的学生信息保存在一个一维数组中,在数据段中变现为: 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 其中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,否则结束循环,退出该子程序。学生数加 学生数加1 学号排序子程序: 由于学号是按字符的形式存入STUDENT中的,所以可以直接进行比较比较STUDENT8和STUDENT9,若学生只有一位即下一位的第一位是0DH,结束程序,否则先比较STUDENT8表示十位数,若相等再继续比较STUDENT9,即采用冒泡排序方法重新对STUDENT排序,排序结束后调用显示子程序显示出排序结果 流程图: 成绩排序子程序: 先调用求和子程序SUM_PRO把成绩字符转换为十进制数保存在SCORES中,把总和保存在SUM中,从开始比较SCORES中的数,若前一个比后一个小则交换,采用冒泡排序,比较完之后调用显示子程序显示排序结果 流程图: 求均值子程序: 由求和子程序求出总和SUM,又已知学生的总数STUDENTNUMBER便可以直接求出平均值,再调用DEVDIV转换为字符显示出来。 流程图: 成绩统计子程序: 扫描学生信息的成绩,如果该学生信息的第一位为0DH,退出程序,否则到成绩的第三位,若不为空格则90-100即

文档评论(0)

1亿VIP精品文档

相关文档