资源描述:
《用汇编语言编写统计各个分数段人数的程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用汇编语言编写统计各个分数段人数的程序一、实验目的1、进一步熟悉分支、循环程序设计的思路和方法2、掌握各类子程序的设计方思路和技巧二、实验内容设数据段有20个学生的单科成绩(百分制),请按照小于60,60-69,70-79,80-89,90-99,100这6个档次编程统计人数。三、程序扩展该程序可以作为一个建立学生成绩档案的子程序,在之基础上加以改进,通过增加统计学生各门成绩、成绩排名等一系列子程序,可以建立学生档案。四、设计思路(参考流程图)五、附录:1、程序清单如下:SSEGSEGMENTPARAS
2、TACK'stack'DW100HDUP(0);初始化堆栈大小为100SSEGENDSDSEGSEGMENTBUFDW52,53,32,54,66,54,71,65,57,98DW75,82,51,52,92,55,100,56,61,89COUNTEQU$-BUF;COUNT的值为BUF所占的字节数STR1DB'0-59:','$'STR2DB'60-69:','$'STR3DB'70-79:','$'STR4DB'80-89:','$'STR5DB'90-99:','$'STR6DB'100:','
3、$'RESDW20DUP(?);在存储区RES中设置15个初值为0的数据DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGMAINPROCFAR;主程序入口MOVAX,DSEGMOVDS,AXSTART:MOVCX,COUNT/2+1;设计数器初值MOVDI,OFFSETRES;取RES的首址MOVSI,OFFSETBUF-2;取BUF的首址BEGIN:INCSIINCSI;修改SI指针DECCX;设循环次数CXJZOUTPUT;循环结束,则转OUTPUTMOVAX,[SI
4、];取BUF中第一个数放到AX寄存器CMPAX,60;将AX中数据和60进行比较JBLOP1;小于60,则转LOP1CMPAX,70;否则,继续与70进行比较JBLOP2;小于70,则转LOP2CMPAX,80;否则,继续与80进行比较JBLOP3;小于80,则转LOP3CMPAX,90;否则,继续与90进行比较JBLOP4;小于90,则转LOP4CMPAX,100;否则,继续与100进行比较JBLOP5;小于100,则转LOP5JZLOP6;等于100,则转LOP6LOP1:MOVBX,[DI]INC
5、BXMOV[DI],BX;对小与60的数据计数,并把其放在RES的第一个字节中JMP;转到BEGINLOP2:MOVBX,[DI+2]INCBXMOV[DI+2],BX;对60-69的数据计数,并把其放在RES的第二个字节中JMPBEGIN;转到BEGINLOP3:MOVBX,[DI+4]INCBXMOV[DI+4],BX;对70-79的数据计数,并把其放在RES的第三个字节中JMPBEGIN;转到BEGINLOP4:MOVBX,[DI+6]INCBXMOV[DI+6],BX;对80-89的数据计数,并
6、把其放在RES的第四个字节中JMPBEGIN;转到BEGINLOP5:MOVBX,[DI+8]INCBXMOV[DI+8],BX;对90-99的数据计数,并把其放在RES的第五个字节中JMPBEGIN;转到BEGINLOP6:MOVBX,[DI+10]INCBXMOV[DI+10],BX;对等于100的数据计数,并把其放在RES的第六个字节中JMPBEGIN;转到BEGINOUTPUT:LEADX,STR1;取字符串STR1的首址MOVAH,9INT21H;输出字符串STR1CALLDATCHLEADX
7、,STR2;取字符串STR2的首址MOVAH,9INT21H;输出字符串STR2ADDDI,2CALLDATCHLEADX,STR3;取字符串STR3的首址MOVAH,9INT21H;输出字符串STR3ADDDI,2CALLDATCHLEADX,STR4;取字符串STR4的首址MOVAH,9INT21H;输出字符串STR4ADDDI,2CALLDATCHLEADX,STR5;取字符串STR5的首址MOVAH,9INT21H;输出字符串STR5ADDDI,2CALLDATCHLEADX,STR6;取字符串
8、STR6的首址MOVAH,9INT21H;输出字符串STR6ADDDI,2CALLDATCHMOVAH,1INT21HMOVAH,4CHINT21H;返回DOSDATCHPROC;数值转换为ASCII码的子程序PUSHDXPUSHCXPUSHBXPUSHAXXORDX,DXMOVAX,[DI]MOVCX,10DIVCXMOVBX,DXMOVDL,ALADDDL,30HMOVAH,2INT21HMOVDL,BLADDDL,30HMOVAH,2