资源描述:
《用总汇编对学生,学号,成绩排序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实用标准华北科技学院综合性实验报告课程名称汇编语言实验学期XXXX至XXXX学年第X学期学生所在系部计算机学院网络工程系年级XXX专业班级网络XXX班学生姓名XXXX学号XXXXXXXXXXXXXXX任课教师李冬艳实验成绩计算机学院制文案大全实用标准《汇编语言》课程综合性实验报告开课实验室:基础实验室二日期:XXXXXXXX实验题目学生成绩排序一、实验目的进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序、子程序、宏指令编程方法,提高汇编语言程序设计能力的应用水平。二、设备与环境PC兼容机、Windows操作系统、汇编程序masmforwindows2012三、实验内容编制一
2、程序,要求接收从键盘输入的一个班的学生的学号、姓名、成绩,对学生的成绩进行排序,最后把学号、姓名、学生成绩、名次显示出来。实验要求:1.必须画流程图。2.本程序涉及汇编语言的多重循环、子程序及宏,其中成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。3.要求用菜单选择。具体要求:输入序号1是数据录入并输出(包括姓名、学号、成绩);输入序号2是排序后的数据输出(包括姓名、学号、成绩、名次);输入序号3(选做)是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。注意:所有数据录入必须有合法性判断。四、实验结果及分析(一)、程序实现的功能。文案大全实用标准1.本程序较为简
3、单录入成绩,成绩间用空格隔开。程序会根据程序录入的顺序自动安排学号并根据成绩由大到小进行排序,输出名次。2.程序自带报错功能,提示输入正确的数据,使数据录入有合法性判断。(二)、程序的分析:1、本程序中分别运用了宏,子程序、定义提示符等,来简化程序,让程序更容易的看清楚。①:宏定义的举例:DISPMACROSTRINGPUSHDXLEADX,STRINGMOVAH,09HINT21HPOPDXENDM②:子程序定义的举例:STOREPROCNEARPUSHBXMOV[DI],BH;(DI目的变址寄存器,用于存放目的缓冲区的偏移地址)INCDI;偏移地址自加一MOV[DI],BLINCDI
4、POPBXRETSTOREENDPNEXTPROCNEARPUSHCX文案大全实用标准PUSHBXPUSHCOUNTMOVCX,COUNTLEADI,BUFF;BUFF地址传送给DIP2:CMPCX,0;比较Cx与0JZDONE;结果为0则转移到DONEINCDI;DI自加一INCDI;DI自加一CMPBH,[DI]JABIGJBSMALLINCDICMPBL,[DI]JABIG2INCDIDECCXJMPP2SMALL:INCDIINCDIDECCXJMPP2BIG2:DECDIBIG:PUSHCXMOVBX,COUNTMOVCL,02HSHLBX,CL;逻辑左移,最高位数移入CF,最
5、低位补0MOVAX,[BUFF+BX-4]MOV[BUFF+BX],AXMOVAX,[BUFF+BX-2]文案大全实用标准MOV[BUFF+BX+2],AXPOPCXDECCOUNT;人数总和自减一LOOPBIG;DECDIDECDIDONE:POPCOUNTPOPBXPOPCXRETNEXTENDP③:提示符定义的举例:IFERRORPROCNEAR;检测输入是否有错MOVDH,00HCMPAL,'0'JBERRORCMPAL,'9'JAERROR;CF=0且ZF=0转移JMPNO_ERRORERROR:DISPERRORMOVDH,01HNO_ERROR:RET;栈顶字单元出栈,其值
6、赋值给IP寄存器,(IP地址指针寄存器)将栈顶字单元保存的便宜地址作为下一条指令的偏移地址IFERRORENDP2、程序的设计:文案大全实用标准流程图提示所有数据录入必须有合法性判断。键盘输入录入数据,根据录入数据满足以下要求,一是,必须是数字,二是,不能为0,小于9,这里是当一个数字为一个来处理的。子程序IFERROR键盘输入=0?跳转到ERROR显示ERROR<=9?跳转到NO_ERROR跳转到NO_ERROR跳转到ERROR显示ERROR结束程序否否是是文案大全实用标准宏定义:宏定义主要用于将字符串进栈这一重复的过程中。子程序IFERROR键盘输入进栈跳转到NO_ERROR显示输入
7、字符结束程序子程序NEXT键盘输入CX,BX,COUNT进栈BUFF地址传送给DICOUNT赋值给CXDI自加2Count=0?是转到DONE排序:文案大全实用标准BH=[DI]?转到BIG转到SAMLLDI自加2CX自减1转到P2CX进栈DI自加1BH=[DI]?转到BIG2DI自加1DI自加1转到P2高于低于等于BX=COUNT的值,CL=02HCOUNT逻辑左移02HAX=[BUFF+BX-4][BUFF+BX]=AXAX=[