比赛评分系统设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

摘要 (1)

1概述 (2)

1.1任务要求 (2)

1.2编程环境 (2)

2分析 (3)

2.1程序功能 (3)

2.2设计思路 (3)

3程序流程图 (4)

3.1主程序流程图 (4)

3.2子程序流程图 (5)

4程序调试 (8)

5心得与体会 (9)

参考文献 (11)

摘要

用汇编语言编写程序能够直接利用硬件系统的特性直接对位、字节或字寄存器、存储单元、I/O端口进行处理,同时也能直接使CPU指令系统和指令系统提供的各种寻址方式编出高质量的程序。汇编程序是最早也是最成熟的一种系统软件,能够将汇编语言源程序翻译成机器语言程序,可以自动对源程序进行检查给出错误信息等。本说明书主要介绍了用汇编语言编写程序计算比赛成绩的设计思路和编程流程图,以及调试程序时的心得与体会。

关键词汇编流程

比赛评分系统程序设计

1概述

1.1任务要求

①比赛选手人数控制在30以下;

② 9个评委,每个评委给分范围为0~10分(整数),随机给出分数

③ 9个评委的给分中,去掉一个最高分和一个最低分,余下7位评委的平均分即为参加者的得分(精确到小数点后一位);

④将分数在屏幕中间位置处用红色显示出来;

⑤将参加比赛的选手的排名顺序显示出来。

1.2编程环境

把汇编语言翻译成机器语言的过程称为汇编,为了实现这一过程正确运行汇编语言,系统需具备以下编辑程序:

Masm.exe

Link.exe

Debug.exe

Masm为宏汇编程序,负责对源文件进行汇编;link为连接程序,把汇编后产生的目标模块连接在一起,产生可执行文件;debug是调试程序,它是调试汇编语言程序必不可少的工具。

2分析

根据设计任务书分析得出程序要求具备的功能,进而写出自己的设计思路。

2.1程序功能

根据设计任务要求可以得出所涉及程序必须具有以下功能

(1)显示选手序号

(2)显示9个评委的评分

(3)用红色字体显示每位选手的平均分

(4)根据选手平均得分排序(本程序按照分数由高到低排列)

2.2设计思路

主要采用循环结构和子程序调用的基本结构形式,编写程序产生9个0~10的随机数,找出这9个数中的最大和最小的数,即评委给出的最高分和最低分,分别保存。

再对这9个数求和,减去前面保存的最大数和最小数,所得的值除以7,即为选手的平均分,分别保存整数部分和小数部分。保存该分数并在屏幕中间用红色显示出来。以上过程循环30次,然后根据平均分的高低对选手进行排序并调用BIOS功能使平均分为红色显示。

为了使程序方便阅读和修改,减少编程工作量,节省存储空间,并易于实现程序的模块化,在编写程序的时候尽可能的把一些具有特定功能的程序段独立出来编写成可以被其他程序多次调用的子程序,然后在主程序需要的地方调用。汇编程序中的CALL和RET指令就是完成子程序调用和返回功能的。

有了以上基本的设计思路,便可以着手准备开始编写流程图,然后再查阅相关资料巩固关于汇编语言指令系统以及寻址方式的知识和使用技巧,复习调试程序的方法以及常见问题的解决办法等等。

3程序流程图

流程图是算法的图形描述,它以图形的方式把解决问题的先后次序和程序的逻辑结构直观地、形象地描述出来,使得编程的思路清晰,有利于编制、调试程序。

3.1主程序流程图

图3-1 主程序流程图

为了使程序简洁明了和易于调试查错,因此把流程图分成了几个部分。主程序的流程图如上图3-1所示,由流程图中可以看出程序的主要设计思路和整体框架。

3.2子程序流程图

对于一些具有特殊功能的程序可以编制成子程序,通过调用来实现功能,这样有利于程序的读和写,也易于查错,因此本题将显示指定字符串、显示十进制ASCII码、查找最高分最低分的过程编写成子程序以供调用,方便简洁明了,可以更快地确定编程的方向和目的,找出解决问题的最佳途径。由于显示指定字符串、显示十进制ASCII码涉及DOS功能调用,指令简单,为汇编者所熟记的知识,可以不用流程图再次赘述。查找最高分最低分的流程图如图3-2所示,从图中可以看出,找出最高分的方法和查找最低分的方法类似,只需更改其中的个别指令,即可达到目的。

图3-2 查找最高分和最低分程序流程图

将各个选手按照所得的平均分排序的程序流程图如图3-3所示。由于参赛选手的人数不多,采用冒泡法排序可以达到快速、准确的效果。

数据的排序采用冒泡法降序排列,将其两两比较。前一个数较大,则不改变原位置,否则两数交换,一次将全部数据排序,排序的次数由需要排序的数据个数决定。这种排序方法是从最低部的元素开始进行比较,较小的元素将会像气泡一样往上冒。

在排序的过程中,外循环遍历要排序的元素,内循环用于挑选出最值。内循环用于将相邻的两个元素进行比较,将小的元素调到大元素的前头,内循环的循环次数表示相邻元素的交换趟数。

此外,在整个程序中,除了这三个主要环节,还需要编写子程序用于显示字符串,产生随机数等等,这些模块的编程思路比较直观,所以在流程图中没有着重表明。

图3-3 将平均成绩排序的流程图

有了编写汇编语言计算比赛成绩的思路和流程图之后,通过查找一些不常见

的指令和查阅相关的参考资料,就可以编写出初步的源程序。

4程序调试

经过调试程序,得出随机给出选手得分的运行的结果如图4-1所示。

图4-1 随机给出的选手得分

最终排名和选手所得的分数如图4-2所示。图中给出了24位选手的成绩和排名,排名顺序为从高分到低分,最后一列为各个选手所得的平均分,用红色显示。

图4-2 选手排名顺序

相关文档
最新文档