预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验五循环结构的程序设计:排序程序设计实验 1、实验目的 (1)掌握接收键盘数据的方法。 (2)掌握循环结构的程序设计和排序程序设计的方法。 (3)进一步熟练在PC上建立、汇编、链接、调试和运行汇编语言程序的过程。 2、实验内容 用汇编语言编写学生成绩统计程序:键盘输入学生成绩到SCORE中(0<=分 数<=100,设有10个学生成绩分别是56,69,84,82,73,88,99,63,100, 80)。编程将它们由大到小排序,存回到原来的SCORE变量中;并统计低于60 分、60~69、70~79、80~89、90~99及100分的人数,分别存放在S5、S6、 S7、S8、S9、S10单元中。 3、实验及报告要求: (1)要求画出完整的程序流程图。 (2)根据流程图,编写完整的汇编代码源文件,要求写出所有伪指令和指令的注 释; (3)编译、连接生成可执行文件,调试该可执行文件。 (4)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评 分的主要依据。 (5)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法、 汇编指令及汇编语言编程方法、微机原理学习方法作出总结。 4、思考题: 如何从屏幕输出结果? 0 统计人数的程序流程图: 开始 从score中取出第SI数,DH赋值为10 YDH=0 N S<60 N Y S5加160<=s<70N YN S6加170<=s<80 Y80<=s<90 S7加1 S8加1 S9加1 DH减1,SI加1 显示结果 结束 SCORE的输入和排序流程图: 开始 定义2个数据段SC和SCORE 从键盘输入10个0~100的数到sc中 把SC中的数一个一个的取出来转换为十六进制的数 把上一个数存入SCORE 0 取SCORE的第SI个数存入AL N Y N y 统计人数的程序 输入DATASSEGMENT BUFFERDB80,81DUP(0),'$' SCORE1DB10DUP(0) ;此处输入数据段代码 DATASENDS 0 STACKSSEGMENT STADB64DUP(0) SP_TOPDB0 STACKSENDS CODESSEGMENT ASSUMECS:CODES,DS:DATAS,SS:STACKS START: MOVAX,DATAS MOVDS,AX MOVAX,STACKS MOVSS,AX LEASP,SP_TOP LEADX,BUFFER LEADI,SCORE1 MOVAH,0AH INT21H LEASI,BUFFER ADDSI,2 MOVDL,0 MOVCX,10 JU:MOVAL,[SI] 0 CMPAL,0DH JEEXIT PUSHCX CMPAL,2CH JECH1 POPCX INCSI INCDL LOOPJU JMPEXIT CH1:CMPDL,2 JNECH2 MOVAL,[SI-2] SUBAL,30H MOVCL,10 MULCL MOVAH,0 MOVBL,[SI-1] SUBBL,30H 0 ADDAL,BL MOV[DI],AL POPCX INCDI INCSI MOVDL,0 LOOPJU CH2:MOV[DI],100 POPCX INCDI INCSI MOVDL,0 LOOPJU EXIT:MOVAH,4CH INT21H CODESENDS ENDSTART 记人数DATASEGMENT SCOREDB67 0 S5db0 S6db0 S7db0 S8db0 S9db0 S10db0 TABLEDWNP,NP,NP,NP,NP,NP,S60,S70,S80,S90,S100 DATAENDS CODESEGMENT'CODE' ASSUMECS:CODE,DS:DATA START:MOVAX,DATA MOVDS,AX MOVAH,0 LEASI,SCORE SP:MOVAL,[SI] MOVBL,10 DIVBL SALAL,1 MOVBL,AL MOVBH,0 JMPTABLE[BX] 0 S100:INCS10 JMPNEXT S90:INCS9 JMPNEXT S80:INCS8 JMPNEXT S70:INCS7 JMPNEXT S60:INCS6 JMPNEXT