计算比赛成绩

更新时间:2024-07-06 19:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、设计内容与设计要求

1.课程设计目的:

《汇编语言程序设计》是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。 2.课题题目

1)测量任意程序的运行时间

2)读入一个文本文件并以DEBUG中的D命令格式显示。 3)文件加密程序 4)编写一个时钟程序 5)画网格线 6)画脉冲波图形 7)用“*”画菱形框 8)计算比赛成绩 3.设计要求:

掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。

1. 设计正确,方案合理。 2. 界面友好,使用方便。 3. 程序精炼,结构清晰。

4. 设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。

5. 上机演示。

6. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的汇编源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;

7. 按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。并用A4的复印纸打印并装订;

二、进度安排

第 1 周:

星期1 星期2 星期3

星期4

附:

课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。 正文总字数要求在5000字以上(不含程序原代码)。

目录

一、 二、 1.1.

题目 .......................................................................................................................................... 4 程序总体设计方案、思路 ...................................................................................................... 4 总体设计方案 .......................................................................................................................... 4

1.2. 三、 四、 五、 六、

设计思路 .................................................................................................................................. 4 程序设计框图 .......................................................................................................................... 5 源程序清单 .............................................................................................................................. 6 程序调试结果 ........................................................................................................................ 14 设计总结 ................................................................................................................................ 14

一、 题目

编制一计算比赛成绩的程序,要求完成以下功能: (1) 9名评委,每个评委给分范围为0~10(整数);

(2) 9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位);

(3) 将得分在光标位置处显示出来。

二、 程序总体设计方案、思路

1.1. 总体设计方案

通过读取依次从键盘输入的9个两位的十进制数得分,将得分保存在字符串

中,然后用冒泡法将9个数的位置按大小重新排列并输出,再将中间的7个数累加起来除以7,即得到去掉最高分和最低分之后的平均分,最后设置光标位置到平均分处。

1.2. 设计思路

通过记录键盘,将ASCII码转化为二进制数寸入长度为9的字符串中,此部分使用用循环结构。若输入的两位数的首位,即十位,非0或非1,则提示错误并要求重复输入,若输入的个位数非0~9中的数,则提示错误并要求重复输入。

用冒泡法重排9个数,使得第1和第9个数分别为最大数和最小数,并在屏幕中依次显示出来。然后用循环语句求出9个数中中间的7个数的和,即总得分,若总得分为70分,则直接输出平均分:10.00分。若小于70分则将总得分除以7,得到的商作为平均分的个位数,输出一个小数点,将余数乘以10再除以7,如此循环3次,后两次不输出小数点,得到精确到小数点后两位的平均的分数,再将平均分输出。最后改变光标位置为平均得分处。

三、 程序设计框图

开始 输入9个分数 按大小重排分数 求中间7个数的和 总分>=70? YES NO 平均分=总分/7 平均分=10.00 输出平均分 改变光标位置 结束

四、 源程序清单

DATA SEGMENT BUF DB 10 DUP(0)

STRING1 DB 'Please enter the score ' NUMBER DB 31H,': ','$'

STRING2 DB 0AH,'The ranged scores are:','$'

STRING3 DB 'After removing the highest and lowest score, the average score is: ','$'

ERROR DB 'ERROR',0AH,0DH,'$' DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX XOR SI,SI;SI置0 MOV CX,9;9个数 INPUT:

LEA DX,STRING1 MOV AH,9 INT 21H

MOV AH,1

INT 21H;输入得分的十位到AL CMP AL,'0'

JB ER ;AL<0小于则跳到ER CMP AL,'1'

JA ER ;AL>1则跳到ER SUB AL,30H MOV DL,10

MUL DL;十位乘以10 MOV DX,AX;DX存十位数 MOV AH,1

INT 21H;输入得分的个位到AL CMP AL,'0'

JB ER ;AL<0小于则跳到ER CMP AL,'9'

JA ER ;AL>10则跳到ER SUB AL,30H

ADD AL,DL;个位十位相加到AL MOV BUF[SI],AL INC SI INC NUMBER MOV DL,0AH;换行

MOV AH,2 INT 21H

MOV DL,0DH;回车 INT 21H

LOOP INPUT;循环输入9次 JMP RANGE_0;转入排序 ER:

;输入错误后返回重新输入

LEA DX,ERROR

MOV AH,9 INT 21H JMP INPUT RANGE_0: MOV BX,1 MOV CX,9 XOR DI,DI RANGE: MOV AL,BUF[DI] CMP AL,BUF[DI+1] JAE NEXT_1 XCHG BUF[DI+1],AL MOV BUF[DI],AL MOV BX,0

NEXT_1: INC DI LOOP RANGE CMP BX,0 JE RANGE_0 ;冒泡法排列得分

LEA DX,STRING2 MOV AH,9 INT 21H MOV CX,9 XOR SI,SI;SI清零 MOV AH,2 RANGE_OUTPUT:

; 输出排序后的得分 MOV DL,BUF[SI] ADD DL,30H

CMP DL,39H;判断是否是10分 JA TENS_1 JBE TENS_0 TENS_1:

;十位数为1,则输出'10'

MOV BX,1 MOV DL,'1'

INT 21H MOV DL,'0' INT 21H

INC SI MOV DL,',' INT 21H JMP NEXT_2 TENS_0:

;十位数为0,则按原得分输出 INT 21H INC SI MOV DL,',' INT 21H NEXT_2:

LOOP RANGE_OUTPUT MOV AH,2 MOV DL,0AH;换行 INT 21H

MOV DL,0AH;换行 INT 21H

MOV DL,0DH;回车 INT 21H

LEA DX,STRING3

MOV AH,9H

INT 21H

MOV CX,7;累加中间7个数字 XOR AX,AX DEC SI SUM:

;求7个分数的和

DEC SI

ADD AL,BUF[SI] LOOP SUM

CMP AL,46H JAE FULL_MARK JMP N_FULL_MARK

FULL_MARK: ;满分时

MOV AH,2H MOV DL,'1' INT 21H MOV DL,'0' INT 21H MOV DL,'.'

INT 21H MOV DL,'0' INT 21H MOV DL,'0' INT 21H JMP ENDING

N_FULL_MARK: ;非满分时

MOV CX,2

MOV BH,1;小数点只出现1次

DIVISION:

MOV BL,7 DIV BL;除以7 PUSH AX ADD AL,30H MOV DL,AL MOV AH,2 INT 21H CMP BH,0 JE DOT MOV DL,'.' MOV BX,0

DOT: INT 21H POP AX

MOV AL,AH;余数存入AL MOV DL,10

MUL DL;余数乘以10,结果存入AX

LOOP DIVISION

ENDING:

MOV AH,02 MOV BH,0 MOV DX,0C46H INT 10H;设置光标位置 MOV AH,1 INT 21H

CODE ENDS END START

五、 程序调试结果

六、 设计总结

通过课程几天的课程设计,学到了诸多上课学不到的知识,特别是体会到了汇编语言与高级程序语言编程的不同,起初非常不适宜汇编语言的编程,高级程序语言中的基本功能,入多重循环和套嵌,在汇编语言看来缺是相当复杂的,还有数字的输入和输出都要经过ASCII码与二进制的转换,数据的定义少得可怜,这些特性都让起初的我感到寸步难行。但是进过进一步的上机操作和学习,汇编语言开始变得明朗起来。

此次程序设计虽然收获不小,也留有许多遗憾,如程序没有能够对输入得分大于10分的错误操作做出提示,结果的平均分的百分位在某些时候存在误差,有可能是因为程序中数据是以字节形式存储的,字符长度太短导致误差,也有可能是因为求小数的方法导致的。

总的来说这次课程设计虽然遇到了一些比较麻烦的问题,但还算比较顺利,经过一些讨论和修改,一个完整并且能达到要求的程序总算是写好了,过程虽然有点坎坷,可是收获也颇丰,通过这次课设让我对课本基础知识有了一个系统的掌握,而且对课题设计的思路也有了比较清晰的认识,让我对汇编的了解更加深刻。

计算机科学与技术系课程设计评分表

课程名称: 项 目 评 价 设计方案的合理性与创造性 设计与调试结果 设计说明书的质量 答辩陈述与回答问题情况 课程设计周表现情况 综合成绩

教师签名: 日 期:

(注:1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。)

本文来源:https://www.bwwdw.com/article/54m.html

Top