资源描述:
《汇编---学生成绩排序综合实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、华北科技学院综合性实验报告华北科技学院综合性实验报告课程名称汇编语言实验学期2011至2012学年第1学期学生所在系部计算机学院网络工程系年级2009专业班级网络B093学生姓名邓新龙学号200907024311任课教师李冬艳实验成绩计算机学院制第11页华北科技学院综合性实验报告《汇编语言》课程综合性实验报告开课实验室:软件一实验室2011年12月6日实验题目显示学生名次表一、实验目的进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和子程序编程的方法,巩固提高汇编语言程序设计能力应用水平。二、设备与环境Windows,asm集成实验环境三、实验内容1、画流程图2、程序
2、设计3、编写代码4、结果分析5、实验报告四、实验结果及分析① 程序功能l学生学号、成绩输入l学生成绩排序l学生学号、成绩、排名输出② 程序简析本程序由一个主程序和五个子程序组成:MAIN主程序,INPUTS输入子程序,SORT成绩排序子程序,PRINT输出子程序,PUT输出十进制数,INN输入十进制数。定义了两个宏:CLY——回车换行,INPUT——调用1号功能。定义四个数组:ID数组,用于保存学号GRAND1数组,用于保存排序前的成绩GRAND2数组,用于保存排序后的成绩RANK数组,用于保存学生信息输入次序第11页华北科技学院综合性实验报告操作过程:u输出提示信息u输入学生个数
3、(任意位,回车结束输入)u输出提示信息u输入的学号(五个数字)u自动输出空格,对齐u输入成绩,回车结束u自动回车换行,输入下一个学生信息u输入结束,自动输出成绩单,程序结束③ 流程图MAIN主程序:主程序开始输入学生个数保存至NUMBERCALLINPUTSCALLSORTCALLPRINT 结束第11页华北科技学院综合性实验报告INPUTS子程序:输出提示输入次序X+1保存外循环次数输入学号输出空格输入成绩回车?NY保存输入次序,恢复外循环次数外循环结束?NYRET返回主程序第11页华北科技学院综合性实验报告SORT子程序:把GRANG1传送给GRAND2人数减1给CX保存外循环
4、次数GRAND2给AXAX>=AX+2YNGRAND2中成绩交换RANK中名次交换AX=AX+2内循环结束?NY恢复外循环次数外循环结束?NYRET返回第11页华北科技学院综合性实验报告PRINT子程序:显示提示初始化BX,CX,DI从RANK取出名次计算学号单元位移量显示学号输出空格计算成绩单元位移量显示成绩输出空格输出名次名次加1RANK地址加1人数减1=0?NYRET返回第11页华北科技学院综合性实验报告PUT子程序:需要输出的数给AXCX=0CX加1AX除以BX余数入栈商=0?NY余数出栈给AXAL加30H输出余数循环结束?NYRET返回第11页华北科技学院综合性实验报告I
5、NN子程序:BX=0输入数字是否为回车?YNAL减30H字节扩展为字BX和AX交换AX乘以10BX加AX给BXRET返回第11页华北科技学院综合性实验报告④ 关键代码nINPUTS子程序MOVCX,0MOVCL,NUMBERLEASI,IDLEADI,GRAND1ShuRu0:INCXPUSHCX;保护输入学生个数MOVCX,5ShuRu1:;输入学号,保存到IDINPUTMOV[SI],ALINCSILOOPShuRu1MOVCX,6;输出空格,保证格式ShuRu2:MOVAH,2MOVDL,''INT21HLOOPShuRu2CALLINN;输入成绩MOV[DI],BX;成绩保
6、存到GRAND1ADDDI,2CLYMOVBX,0MOVBL,XMOVRANK[BX-1],BL;保存输入次序POPCXLOOPShuRu0nSORT子程序MOVCX,0MOVCl,NUMBER;把GRAND1中成绩传送给GRAND2LEASI,GRAND1LEADI,GRAND2CLDREPMOVSWMOVCX,0MOVCL,NUMBER;冒泡排序DECCXPAIXU1:PUSHCX;保存外循环次数LEASI,GRAND2MOVDI,0PAIXU2:MOVAX,[SI]CMPAX,[SI+2]JGENEXT;降序XCHGAX,[SI+2];交换第11页华北科技学院综合性实验报告M
7、OV[SI],AXMOVAL,RANK[DI];交换名次XCHGAL,RANK[DI+1]MOVRANK[DI],ALNEXT:ADDSI,2;SI指向下一个数INCDILOOPPAIXU2POPCXLOOPPAIXU1nPRINT子程序MOVBX,0MOVCX,0MOVDI,0SHUCHU1:MOVAX,0;取名次MOVAL,RANK[DI]DECALMOVBL,5MULBLLEASI,IDADDSI,AX;算出对应学号的开始位置MOVCX,5;输出学号LET2:M