版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 TOC o 1-5 h z 摘 要1 HYPERLINK l bookmark4 o Current Document 1概述2 HYPERLINK l bookmark6 o Current Document 任务要求 2 HYPERLINK l bookmark8 o Current Document 编程环境2 HYPERLINK l bookmark10 o Current Document 2分析 3 HYPERLINK l bookmark12 o Current Document 程序功能 3 HYPERLINK l bookmark14 o Current Document
2、设计思路3 HYPERLINK l bookmark16 o Current Document 3程序流程图 4 HYPERLINK l bookmark18 o Current Document 主程序流程图 4 HYPERLINK l bookmark20 o Current Document 子程序流程图 5 HYPERLINK l bookmark22 o Current Document 4程序调试 8 HYPERLINK l bookmark24 o Current Document 5心得与体会 9参考文献11摘要用汇编语言编写程序能够直接利用硬件系统的特性直接对位、字节或字寄存
3、器、存储单元、I/O端口进行处理,同时也能直接使CPU指令系统和指令系统提供的各种寻址方式编出高质量的程序。汇编程序是最早也是最成熟的一种系统软件,能够将汇编语言源程序翻译成机器语言程序,可以自动对源程序进行检查给 出错误信息等。本说明书主要介绍了用汇编语言编写程序计算比赛成绩的设计思 路和编程流程图,以及调试程序时的心得与体会。关键词汇编流程比赛评分系统程序设计1概述任务要求比赛选手人数控制在30以下;9个评委,每个评委给分范围为010分(整数),随机给出分数9个评委的给分中,去掉一个最高分和一个最低分,余下7位评委的平均分即为参加者的得分(精确到小数点后一位); 将分数在屏幕中间位置处用红
4、色显示出来; 将参加比赛的选手的排名顺序显示出来。编程环境把汇编语言翻译成机器语言的过程称为汇编,为了实现这一过程正确运行汇 编语言,系统需具备以下编辑程序:Masm.exeLink.exeDebug.exeMasm为宏汇编程序,负责对源文件进行汇编;link为连接程序,把汇编后产生的目标模块连接在一起,产生可执行文件;debug是调试程序,它是调试汇编语言程序必不可少的工具。图3-1 主程序流程图2分析根据设计任务书分析得出程序要求具备的功能,进而写出自己的设计思路。程序功能根据设计任务要求可以得出所涉及程序必须具有以下功能(1)显小选手序号(2)显示9个评委的评分(3)用红色字体显示每位选
5、手的平均分(4)根据选手平均得分排序(本程序按照分数由高到低排列)设计思路主要采用循环结构和子程序调用的基本结构形式,编写程序产生9个010的随机数,找出这 9个数中的最大和最小的数,即评委给出的最高分和最低分, 分别保存。再对这9个数求和,减去前面保存的最大数和最小数,所得的值除以 7,即为选手的平均分,分别保存整数部分和小数部分。保存该分数并在屏幕中间用红色 显示出来。以上过程循环30次,然后根据平均分的高低对选手进行排序并调用BIOS功能使平均分为红色显示。为了使程序方便阅读和修改,减少编程工作量,节省存储空间,并易于实现 程序的模块化,在编写程序的时候尽可能的把一些具有特定功能的程序段
6、独立出 来编写成可以被其他程序多次调用的子程序,然后在主程序需要的地方调用。汇 编程序中的 CALL和RET指令就是完成子程序调用和返回功能的。有了以上基本的设计思路,便可以着手准备开始编写流程图,然后再查阅相 关资料巩固关于汇编语言指令系统以及寻址方式的知识和使用技巧,复习调试程 序的方法以及常见问题的解决办法等等。3程序流程图流程图是算法的图形描述,它以图形的方式把解决问题的先后次序和程序的 逻辑结构直观地、形象地描述出来,使得编程的思路清晰,有利于编制、调试程 序。主程序流程图为了使程序简洁明了和易于调试查错,因此把流程图分成了几个部分。主程序的流程图如上图3-1所示,由流程图中可以看出
7、程序的主要设计思路和整体框架。子程序流程图对于一些具有特殊功能的程序可以编制成子程序,通过调用来实现功能,这 样有利于程序的读和写,也易于查错,因此本题将显示指定字符串、显示十进制ASCII码、查找最高分最低分的过程编写成子程序以供调用,方便简洁明了,可以更快地确定编程的方向和目的,找出解决问题的最佳途径。由于显示指定字符用、3-2所示,从图中可以显示十进制 ASCII码涉及DOS功能调用,指令简单,为汇编者所熟记的知识,可以不用流程图再次赘述。查找最高分最低分的流程图如图看出,找出最高分的方法和查找最低分的方法类似,只需更改其中的个别指令,即可达到目的。图3-2查找最高分和最低分程序流程图3
8、-3所示。由于参赛选重表明。图3-3将平均成绩排序的流程图将各个选手按照所得的平均分排序的程序流程图如图手的人数不多,采用冒泡法排序可以达到快速、准确的效果数据的排序采用冒泡法降序排列,将其两 两比较。前一个数较大,则不改变原位置,否则两数交换,一次将全部数据排序,排序的次数由需要排序的数据个 数决定。这种排序方法是从最低部的元素开始进行比较,较小的元素将会像气泡 一样往上冒。在排序的过程中,外循环遍历要排序的元素,内循环用于挑选出最值0内循环用于将相邻的两个元素进行比较,将小的元素调到大元素的前头,内循环的循环次数表示相邻元素的交换趟数。此外,在整个程序中,除了这三个主要环节,还需要编写子程
9、序用于显示字 符串,产生随机数等等,这些模块的编程思路比较直观,所以在流程图中没有着有了编写汇编语言计算比赛成绩的思路和流程图之后,通过查找一些不常见的指令和查阅相关的参考资料,就可以编写出初步的源程序图4-2选手排名顺序图4-2选手排名顺序4程序调试经过调试程序,得出随机给出选手得分的运行的结果如图4-1所示一1 C WTWTOT5X s Lc.d._ eK1 -1G1nn90AR3=0T030204xo2 -110&It1立的654 二X 6a9X9qQ.5 二595939383G =810SIBe2e0Q1 =1V*VgVV& =7375646369 =0G10G1G=t50 U =bH
10、bV占占牡1 1 =35241 G4i4*17 =40414AAn13 =2313222工。一3St22232321 5 =221N5!5;55W41 G =312121311,八0114帖4O-41. R =61n2nj?G0 9 =31031 Fl31 R31 PlT2 0 =010202QG92 1.=3V4:V3yg少qN N =9H5H5包w二04lB3e35K fl蕈f* tr -_图4-1 随机给出的选手得分最终排名和选手所得的分数如图4-2所示。图中给出了 24位选手的成绩和排名,排名顺序为从高分到低分,最后一列为各个选手所得的平均分,用红色显示。C = WIWDOWSX sy
11、s-t e,X c:j*d=后3r日后ri.aSf mJHi o5xn91 G3 =SJL。JLxo5,X0X0iJ.。ZL9 :父90ij9H191 2 VLUVVHUu5H1 1 ZG91号G9n947 二31 RFt 1317 C19 -690y6g10942H =V9V9?3j971 fi =75?Q?3?B7J 5 =.0包49S671 HX3 =B49838茅NIL =七b鱼,e-1B1UGm =e28?B0Ho19 =否F1 Hr-1桁Rft3NH 二qs3Q2HT2S =E8&J.E6E61YM口VVV1Vl.PE2 =CeG5A545 sWi9J41S5 -0050学O7XO
12、13 -0-10Q0d0i82 =01G00UGB4 二R2R7132R6RTh后C 0 1npZLa,旭日a =P尸日-S-E-a ri1c日!U 化。 日M土肥.一5心得与体会在本次比赛评分系统程序的设计过程中,本小组各成员积极配合想算法,分 工协作写程序,历经百般波折,通过几个昼夜的艰苦奋战,终于在我们几近绝望 的最后关头突然跳出来一个窗口,程序运行成功了,大家手舞足蹈、欢欣雀跃, 总算努力没有白费,俗话说得好:坚持,就意味着一切。本次微机原理课程设计 感受颇深,受益匪浅。由于初学汇编语言,再加上平时的习题都很简单而且要求不高,所以在看到题目的时候,一开始有些傻眼不知从何着手,仔细看了看
13、想了想查了查资料后发 现把问题分块处理,各个击破,最后再拧成一股纯,问题貌似就变得简单很多, 主要是如何拧成一股纯,从何处开始拧,也就是如何把各个子程序在何处调用才 能实现功能,这个问题确实需要大动脑筋才能确保最后的结果和设计要求相符。第一次上机用汇编编写程序,第一次接触用汇编语言程序产生随机数,第一次尝试着编写子程序,也是第一次听说还有BIOS功能调用。万事开头难,但总要开个头,第一天没着落,就想啊,查资料,通过小组成 员讨论后决定各成员分工合作,每人负责一个功能,最后一起合成调试。然后各自就开始努力的工作了,先是根据要求把可能用到的书中的知识复习巩固了一遍, 然后对准问题查阅相关资料,遇到
14、相似的问题就借鉴过来,再根据实际问题需要 编写自己的程序,就这样一步步按照流程做了下来,途中遇到了诸多问题,但是 问题必须解决才能继续往下写,虽然好些天疲于奔命于图书馆、书店,但是有压 力就有动力,逐渐的问题变得越来越少。编写程序过程中,开始是一塌糊涂,对一些伪指令和 DOS功能调用方便掌握 不牢固,编写起程序来很不灵活,经过查阅资料和询问同学,在边摸索边实践的 过程中,我体会到了编写程序不仅需要广泛深入的知识面,还需要灵活的头脑和 严密的逻辑思维,稍有考虑不到的方面,程序就会“没有生成OBJ文件”。循序渐进的,我终于编写出了我脑子里所想的初步程序,但输入到MF2KP集成开发环境中运行 时,一
15、开始的热情瞬间就没了,程序无法编译,不能生成.obj 文件,想了许久,明白了一点:编写程序最主要的其实不是在于如何编写而是成 百上千次甚至上万次的不断调试。于是,我开始了调试程序这复杂而又极其漫长的过程最终在小组成员共同的努力下,我们成功了,一股成就感袭上心头,各个都 笑了,也松了口气,回头 想想,不仅巩固了所学知识,而且锻炼我们理论结合实 际的能力和团队合作能力。同时也发现了些许不足,我敢肯定的是这次发现的问 题被牢牢记住了,还起了个加深记忆的作用。通过本次课设我发现,定义的变量是可以直接用inc、dec的,即对其内容值加1、减1 ,但是要注意,虽然变量可以看成符号地址,不过此处只是把它们的
16、数据内容加1或减1 ,而非对其地址,之前我以为不能直接对定义好的变量用inc、dec ;使用十六进制数时,若第一个数位值是字母,要在在其前加 0,否则会被认为是变量;寄存器、变量之间传递值时,位数要一致;使用push后记得相应地使用pop ,还要注意二者应反序,即 pushax, push bx , push cx 与 pop cx , pop bx , pop ax 相对应; 在子过程中的ret处之前应放上相应地放上pop语句,而子过程的入口处应相应放上push语句;要养成良好的程序书写习惯,比如标号对齐、参数对齐、注释对齐,这样看起来 赏心悦目,也不容易出错,也易于排错修改;标号最好采用有
17、意义的英文,这样 比较直观,注释尽量详细准确,便于阅读,而且有利于其它程序中作为子程序模块的调用。还有要注意典型程序模块的积累,再复杂的程序也是由一个个小程序模块组成的。这些问题是这次课程设计体会比较深刻的几个方面。总而言之,通过本次比赛评分系统程序的设计,不仅巩固了所学汇编知识, 而且在知识的广面和深面上有了相当程度的拓展。几个枯燥的字母被我们这一折 腾竟然变得有了活力,使我感觉到汇编强大的魔力,编程就像日常生活一样,是 个不断探索和发现的过程,途中必然会遇到困难,前面出现坎儿,是因为对面就 是平原,编程序要知道:坚持,就意味着一切。1沈美明,温冬蝉.IBM-PC汇编语言程序设计(第2版).
18、清华大学出版社,20012沈美明,温冬蝉.IBM-PC汇编语言程序设计例题习题集.清华大学出版社,19913陆忠华.汇编语言程序设计.科学出版社,19934迟成文,王保秀.汇编语言程序设计.中国科学技术大学出版社,19935徐建民.汇编语言程序设计.电子工业出版社.2005年6彭虎,周培玲,傅忠谦.微机原理与接口技术(第 2版).电子工业出版社,2008附录CodeSegmentAssume CS:Code,DS:Code; ;功能:显示指定地址( Str_Addr )的字符串;入口:;Str_Addr =字符串地址(要求在数据段);用法:Output Str_Addr;用法举例:Output
19、 PromptStrOutput MACRO Str_Addrpush axlea dx,Str_Addrmov ah,9int 21hpop axEndM;功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示;入口 : AX=二进制数;出口:在当前光标位置显示转换后的ASCII码数字Dec_ASCII Proc Nearmov dh,10div dhor ax,3030h ;将两位十进制数转换成ASCII码cmp al,30hja $+4mov al,20h ;若十位数是0 ,以空格代替push axmov ah,0ehint 10h ;显示十位数pop axxchg
20、 ah,al movah,0ehmovah,0ehint 10h ;显示个位数 retDec_ASCII EndP; Commentators equ9;评委人数Contestants equ23 ;参赛选手人数Press_Keydb0ah,0dh,The complated. Press any key to exit.$Start:movdi,64 ;显示缓冲区偏移地址movax,0b800h ; 显示缓冲区段地址moves,axmov al,20hmov ah,4 ;字符颜色(红色)mov cx,Contestants ;参赛选手人数cldLine:pushcxmov cx,3rep s
21、toswadd di,154 ;显示缓冲区下一行同列偏移地址pop cxloop Linepush cspop ds ;使数据段与代码段同段push cspop es ;使附加段与代码段同段; ;评委随机打分cldlea si,Buffer ;数据缓冲区地址(选手成绩链表)mov di,siadd di,Contestants*2 ; 选手成绩存放地址mov cx,Contestants ;参赛选手人数mov dl,11 ;除数Grade_0:push cxmov si,di ;选手成绩地址inc siincsi ;下一个链表节点地址mov ax,Contestants+1sub ax,cx
22、;选手序号stosb ;保存选手序号xor bx,bx ;BH=,最高分初值,BL=最低分初值xor dh,dh ;选手总分初值mov cx,Commentators ; 评委人数Grade_1:xor al,alout 43h,alin al,40hxor ah,ahdiv dlxchg ah,al ;舍弃商数,取余数,作为某评委的打分stosb ;保存一个评委打分add dh,al ;累计评委打分cmp bh,aljae $+4 ;最高分 =此评委打分mov bh,al ;保存新的最高分cmp bl,aljbe $+4 ;最低分 =此评委打分mov bl,al ;保存新的最低分loop G
23、rade_1mov al,dhsub al,bh ;减去一个最高分sub al,bl ;减去一个最低分stosb ;保存最后得分pop cxloop Grade_0用冒泡排序法对选手最后得分降序排序lea si,Buffer ;选手成绩链表地址mov cx,Contestants ;参赛选手人数dec cx ;外循环次数Sorting:push cx ;入栈保存外循环次数pushsi ;入栈保存数组地址Compare:push sipopdi ;当前数组元素地址赋给目的变址寄存器,以备交换之用lodsw ;将当前数组元素读入累加器mov bx,axmov al,bx10;将当前最后得分读入累加器ALmov bx,si;相邻的下一个选手信息地址cmp al,bx10;当前选手最后得分与相邻的下一个选手最后得分相比较jae NextOne ;若大于或等于,不作数据交换,处理下一个数组元素mov ax,di;若小于,读入当前选手信息链表节点xchg ax,si;交换链表元素movdi,ax ;保存数值较大者节点地址or al,30hor al,30hmov al,:NextOne:loop Compare ;处理下一个数组元素pop si ;数组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学年级组长个人工作计划
- 大班下学期社会教案《户外活动计划及总结》
- 计划生育家庭奖励扶助年终总结
- 化工企业2025年上半年工作总结及下半年年工作计划
- 员工年度工作总结及明年工作计划的内容
- 妇幼医院某年年度工作计划
- 学校2025年消防安全工作计划
- 《大学英语听力应用教程(第1册)》课件-Unit 2 Private Schools
- 工会劳动合同法题目
- 《ERP的成本管理》课件
- 娱乐行业虚拟现实主题公园建设方案
- 公路工程合同纠纷处理与法律适用考核试卷
- 股权合作协议范本三篇
- 2023年四川省眉山市公开招聘警务辅助人员(辅警)笔试专项训练题试卷(2)含答案
- CFA固定收益证券知到智慧树期末考试答案题库2024年秋首都经济贸易大学
- 2024-2030年中国成品油行业深度调查及投资可行性研究报告
- 光伏项目达标投产实施细则-施工
- 2023年黑龙江省齐齐哈尔市龙沙区烟草专卖局公务员考试《行政职业能力测验》历年真题及详解
- 喷涂质量协议书(2篇)
- 事故隐患内部举报奖励制度
- 入团志愿书(2016版本)(可编辑打印标准A4) (1)
评论
0/150
提交评论