资源描述:
《实验九 子程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验九子程序设计一.实验目的1.掌握程序设计方法,合理划分层次2.掌握子程序的调用与返回的方法1.了解子程序的嵌套与递归二.实验内容与要求编制一程序,要求键入一个班的学生成绩,并存放于50字的ERADE数组中,然后根据ERADE中的成绩,把学生名次填入50字的RANK数组中,再按学号顺序把名次从终端上显示出来。提示:①程序MAIN功能:根据输入的学生成绩,计算并显示出学生名次。②程序INPUT功能:接收一个班级学生的成绩,各成绩之间用空格隔开。③程序RANKP功能:计算一个班级学生的名次。(可参照循环程序(一)中的程序段)④程序O
2、UTPUT功能:输出(显示)一个班级的学生名次⑤程序DECIBIN功能:十进制转换二进制,存入BX⑥程序BINDEC功能:十进制转换二进制,并在屏幕上显示。⑦程序DEC_DIV功能:BX的内容除以CX的内容,并在屏幕上显示一位商。一.程序框图:一.步骤1.自编主程序与子程序。2.输入本班级某门基础课成绩。二.思考题1.写出4位BCD码转二进制数的算法。2.写出AX中进二制数转BCD码的算法。3.将上述子程序结构改为模块化程序设计。答案:DATASEGMENTGRADEDW10DUP(?)COUNTEQU($-GRADE)/2ORG
3、20HRANKDW10DUP(1),'$'DATAENDSSTACKSEGMENTSTACKSTADB20DUP(20H)TOPEQU$-STASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOPMOVDI,0BH;成绩的个数XORAX,AXXORBX,BXINPUT:MOVAH,1;输入学生成绩INT21HCMPAL,0DHJZTRANANDAL,0FHMOVCL,4SHLAL,
4、CLMOVDL,ALMOVAH,1INT21HCMPAL,0DHJZTRANANDAL,0FHADDAL,DLMOVGRADE[BX],AXADDBX,2MOVDL,20HMOVAH,2INT21HJMPINPUTTRAN:XORBX,BXMOVDL,0AH;换行MOVAH,2INT21HJMPLOOP1LOOP1:MOVAX,GRADE[BX]MOVCX,COUNTLEASI,GRADE;成绩的存放地址NEXT:CMPAX,[SI]JNCNO_COUNTINCWORDPTRRANK[BX];存放学生名次NO_COUNT:ADDS
5、I,2LOOPNEXTMOVAX,RANK[BX];输出学生名次
CMPAL,0AHJBASC1MOVDL,1ADDDL,30HMOVAH,2INT21HMOVDL,0ADDDL,30HMOVAH,2INT21HMOVDL,20HMOVAH,2INT21HJMPASC2ASC1:MOVDL,ALADDDL,30HMOVAH,2INT21HMOVDL,20HMOVAH,2INT21HMOVDL,20HMOVAH,2INT21HASC2:ADDBX,2;对下一个学生排名DECDIMOVCX,DILOOPLOOP1MOVAX,4C00H
6、INT21HCODEENDSENDSTART