资源描述:
《编写一计算比赛成绩子模块》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、扬州大学课程实验报告课程名称汇编语言班级实验日期2012.5.25姓名学号实验成绩实验名称模块化程序设计实验目的及要求学会模块化程序的设计;学会现场的保护;熟练的使用模块化程序语句,以及相互之间的调用;熟练的使用Debug调试程序。实验环境编译工具Masm,link;调试工具Debug;DOS实验内容采用模块化程序设计方法编写出以下各题的源程序并上机调试运行,显示(或打印)出结果。编写一计算比赛成绩子模块,要求完成以下功能。① 7名评委,每个评委给分范围为.0~10分(整数);② 7名评委给分中,去掉一个最高分和一个最低分,剩余5名评委中的平均分即为参加者的得分(
2、精确到小数点后1位);③将分数在光标位置处显示出来。8算法描述及实验步骤分为三个模块:第一模块:数据的输入,每次以字符串的形式输入一个整数,如果是10,直接AL赋值10,否则,把字符串的第一个字符赋值给AL,并转成0~9之间的一个数第二模块:如果输入的是第一个数,则把它赋值给MAX,MIN,BL,以后每次输入一个数据,如果比MAX还大,则把它赋值给MAX,如果比MIN小,则赋值给MIN,并把这个数加到BL上,BL除以5相当于BL乘以2,个位右移一位,加一点;开始结束定义存储区NUM,MAX,MIN调用输入模块InPut调用计算模块Calculate调用输出模块Ou
3、tPut主程序第三模块:先判断AL是否等于100,如果等于,直接输入10.0,否则,用AAM把AL中的数转换成两个BCD码的十进制数,并显示出来[NUM+2]>9[NM+1]=2[NUM+2]<0[NUM+1]=2[NUM+1]=2NNAL←10N输入子模块8Y计算模块NMIN←ALALMAXCX=0BL←BL-MAXBL←BL-MINYNMAX←ALYNAL←BLAX←AL*28BL←AL输出AH(高位)输出“.”输出AL(低位)AMMAL=100输出子程序调试过程及实验结果
4、输入0~10之间的数如:4,10,5,7,9,3,8,结果如下:当输入非0~10之间的数,如:T,15,-5时,结果如下:8均有错误提示总结从这次试验中我们初步了解了汇编语言模块化程序的设计及调试过程,学会模块化程序的设计,以及对一些简单计算的处理,对以后的学习有了一定的认识,意识到保护现场的重要性。附录DSEGSEGMENTMAXDB0MINDB0NUMDB3HDB0DB3DUP(0)ResultDB0AH,0DH,"Theresultsis:$"BUFDB0AH,0DH,"Pleaseinputanum:",0AH,0DH,"$"ERRORDB0AH,0DH,
5、"ERROR:",0AH,0DH,"$"TENDB"10.0",0AH,0DH,"$"DSEGENDSSSEGSEGMENTSTACKSTKDB100DUP(0)SSEGENDSCSEGSEGMENTASSUMEDS:DSEG,SS:SSEG,CS:CSEGMAIN:MOVAX,DSEGMOVDS,AX8CALLCalculatePUSHAXLEADX,ResultMOVAH,9HINT21HPOPAXCALLOutPutMOVAH,1HINT21HMOVAH,4CHINT21HInPutPROCNEARSTAR:LEADX,BUFMOVAH,09HINT21HL
6、EADX,NUMMOVAH,0AHINT21HCMPBYTEPTR[NUM+1],2JNZSTEP1CMPBYTEPTR[NUM+2],'1'JNZSTEP0CMPBYTEPTR[NUM+3],'0'JNZSTEP0MOVAL,10RETSTEP1:CMPBYTEPTR[NUM+2],'0'JBSTEP0CMPBYTEPTR[NUM+2],'9'JASTEP0MOVAL,NUM+2SUBAL,30HRETSTEP0:LEADX,ERRORMOVAH,09HINT21HJMPSTARRETInPutENDPCalculatePROCNEARCALLInPutMOVB
7、L,AL8MOVMAX,ALMOVMIN,ALMOVCL,6XORCH,CHLOP1:CALLInPUTADDBL,ALCMPAL,MAXJAM_AXCMPAL,MINJBM_INJMPLOP2M_AX:MOVMAX,ALJMPLOP2M_IN:MOVMIN,ALLOP2:LOOPLOP1SUBBL,MAXSUBBL,MINMOVAL,BLMOVBL,2HMULBLRETCalculateENDPOutPutPROCNEARCMPAL,100JZSTEP2AAMMOVBL,ALORAH,30HMOVDL,AHMOVAH,02HINT21HMOVDL,'.'MOVA
8、H,02H