微机原理-比赛评分系统程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。
用汇编语言编写程序能够直接利用硬件系统的特性直接对位、字节或字寄存器、存储单元、I/O端口进行处理,同时也能直接使CPU指令系统和指令系统提供的各种寻址方式编出高质量的程序。
关键词:微机汇编端口
比赛评分系统程序设计
1初始条件及要求完成的主要内容
1.1初始条件:
用汇编语言编写程序计算某次比赛的成绩。
1.2要求完成的主要内容:
(1)比赛选手人数控制在30以下;
(2) 9个评委,每个评委给分范围为0~10分(整数),随机给出分数;
(3)9个评委的给分中,去掉一个最高分和一个最低分,余下7位评委的平均分即为参加者的得分(精确到小数点后一位);
(4)将分数在屏幕中间位置处用红色显示出来;
(5)将参加比赛的选手的排名顺序显示出来;
(6)撰写设计说明书及调试心得。
2设计方法与构想思路
这次课程设计中用到了汇编语言程序的四种基本结构:顺序结构、分支结构、循环结构和子程序。
顺序结构程序一般是简单程序,它是顺序执行的,无分支、无循环,也无转移,因此也称为直线程序。
分支结构程序是指程序在按指令先后的顺序执行过程中,遇到不同的计算结果值,需要计算机自动进行判断、选择,决定转向下一步要执行的程序段。
程序中的某些部分需要重复执行,设计者不可能将重复部分反复地书写,那样程序会显得很长。只要选好参数,将程序中重复执行部分构成循环结构,这样设计的程序既美观又便于修改。循环结构每次测试循环条件,当满足时,重复执行这一段程序;否则结束循环,顺序往下执行。由于循环程序需要循环准备、修改变量、结束控制等指令,执行的速度会稍慢些。
我们将一个具有特定功能的代码块定义为一个过程(或子程序)。
这次主要采用循环结构和子程序的基本结构形式,编写程序产生9个0~10的随机数,找出这9个数中的最大和最小的数,即评委给出的最高分和最低分,分别保存。
再对这9个数求和,减去前面保存的最大数和最小数,所得的值除以7,即为选手的得分,分别保存整数部分和小数部分。保存该分数并在屏幕中间用红色显示出来。以上过程循环23次,然后对每次得出的选手得分进行排序并调用BIOS功能使字符为红色显示。
为了使程序方便阅读和修改,减少编程工作量,节省存储空间,并易于实现程序的模块化,在编写程序的时候会涉及子程序的设计。在程序设计的过程中,可以把一些具有特定功能的程序段独立出来,按一定的格式编写,成为可以被其他程序多次调用的程序。汇编源程序中的CALL和RET指令就是完成调用和返回功能的。
在编写程序时,要养成良好的程序书写习惯,比如标号对齐、参数对齐、注释对齐,这样看起来赏心悦目,也不容易出错。标号最好采用有意义的英文,这样比较直观,注释尽量详细准确,便于以后读懂,而且有利于其它程序中作为子程序模块的调用。还有要注意典型程序模块的积累,再复杂的程序也是由一个个小程序模块组成的。
在处理实际问题时,设计程序必须要考虑到实际的应用,对所要解决的问题进行全面了解和分析,依据给出的条件和数据,对输入信息、处理过程、输出结果进行可行性分析。在分析问题明确要求的基础上,要建立数学模型,将问题用数学形式表达出来。3程序流程图
流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。
程序流程图表示程序中的操作顺序。
程序流程图包括:
(1)指明实际处理操作的处理符号,它包括根据逻辑条件确定要执行的路径的符号;(2)指明控制流的流线符号;
(3)便于读.写程序流程图的特殊符号。
流程图是算法的图形描述,它以图形的方式把解决问题的先后次序和程序的逻辑结构直观地、形象地描述出来,使得编程的思路清晰,有利于编制、调试程序。
3.1主程序流程图
一个完整的程序比较长,并且结构复杂,如果只用一个程序流程图来表示,那么流程图肯定很复杂,很难读懂。所以这次课程设计用一个主程序流程图和几个子程序流程图来表示复杂的程序。
下面先介绍一下主程序流程图,如果3-1所示。由主程序流程图可以看出程序的主要设计思路和整体框架。
次
次
图3-1 主程序流程图
3.2子程序流程图
由于汇编语言本身的多样性与灵活性,汇编语言程序的结构化程度以及易读程度均不理想。为了更好地辅助分析汇编语言程序的功能,根据汇编指令对程序静态流程的影响,对不同类型处理器的汇编指令进行了统一的分类,并在此基础上详细讨论了一种绘制汇编子程序流程图的算法。最后利用程序基本模块的概念,对该算法进行了改进。
子程序是为了使程序方便阅读和修改,减少编程工作量,节省存储空间,并易于实现程序的模块化。子程序流程图也是为了让程序流程图便于读者阅读。下面介绍这次课程设计程序中所用到的两个主要子程序。
第一个子程序流程图如下所示。
图3-2-1 用冒泡排序法对选手最终得分降序排序
以上是数据的排序采用冒泡法降序排列,将其两两比较。前一个数较大,则不改变原位置,否则两数交换,一次将全部数据排序,排序的次数由需要排序的数据个数决定。这种排序方法是从最低部的元素开始进行比较,较小的元素将会像气泡一样往上冒。
在排序的过程中,外循环遍历要排序的元素,内循环用于挑选出最值。内循环用于将相邻的两个元素进行比较,将小的元素调到大元素的前头,内循环的循环次数表示相