![汇编课程设计报告正文_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/5826335a-2b62-4814-ab38-83fdf79c0328/5826335a-2b62-4814-ab38-83fdf79c03281.gif)
![汇编课程设计报告正文_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/5826335a-2b62-4814-ab38-83fdf79c0328/5826335a-2b62-4814-ab38-83fdf79c03282.gif)
![汇编课程设计报告正文_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/5826335a-2b62-4814-ab38-83fdf79c0328/5826335a-2b62-4814-ab38-83fdf79c03283.gif)
![汇编课程设计报告正文_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/5826335a-2b62-4814-ab38-83fdf79c0328/5826335a-2b62-4814-ab38-83fdf79c03284.gif)
![汇编课程设计报告正文_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-5/1/5826335a-2b62-4814-ab38-83fdf79c0328/5826335a-2b62-4814-ab38-83fdf79c03285.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第 1 章 需求分析 11.1 设计题目 11.2 设计目的 11.3 程序运行环境及开发工具 11.3.1 运行环境 11.3.2 开发工具 11.4 课程设计任务及要求 11.4.1 设计任务 11.4.2 设计要求 1第 2 章 概要设计 22.1 设计思想和原理 22.1.1 设计思想 22.1.2 设计原理 22.2 系统流程图 2第 3 章 详细设计 53.1 数据段的设计 53.1.1 数据段定义 ( DATASEGMENT.)53.2 主程序的设计与实现 53.3 子程序的设计与实现 53.3.1 键盘输入成绩模块 53.3.2 冒泡排序模块 53.3.3,数据输出模块 6
2、第 4 章 系统调试与操作说明 7第 5 章 设计中存在的问题及解决方法 9第 6 章 总结与体会 10参考文献 : 10附录:源程序 12第1章需求分析1.1设计题目成绩分段统计(2) 1.2设计目的在此课程设计中,通过对成绩统计分段程序的设计,来实现键盘输入,排 序,输出功能,熟悉常用系统功能调用和常用算法的实现。如01H功能调用,02H功能调用以及BIOS功能调用的09H调用;掌握常用排序算法的汇编实现, 如本设计中的冒泡排序算法实现降序排列。汇编语言程序设计课程设计是计算机教学实践基础上的一次重要的大型实 验,也是对汇编语言程序设计课程所学理论知识的深化和提高。因此,要求学生能综合应用
3、所学知识,设计与调试出具有实际功能的应用程序,并且在实验的基本技能方面上进行一次全面的训练。培养学生综合运用所学知识独立完成汇编程序课题的能力,使学生能够比 较全面巩固和应用课堂中所学的基本理论和程序设计方法,能够比较熟练完成汇编程序的设计和调试。提高学生对工作认真负责,一丝不苟,和在遇到难题时的协同合作的素质, 培养学生从资料文献,科学实验中获得知识的能力,初步培养工程意识和创新能力,培养学生勇于探索,严谨推理,实事求是的素质。1.3程序运行环境及开发工具1.3.1运行环境Windows xp操作系统,MASM Link汇编链接软件1.3.2开发工具TD Debug记事本1.4课程设计任务及
4、要求1.4.1设计任务从键盘接受15个学生成绩,将15个学生成绩按降序排列,并分别求出最 高,最低成绩。1.4.2设计要求原始数据由键盘输入,存入从 HBCJ开始的存储区域,排序后的成绩存入从 HBPXff始的存储区 域,且将不及格的成绩用红色标注。程序结构中至少包括数 据段,代码段,有子程序应用,有系统功能调用。第2章概要设计2.1设计思想和原理2.1.1设计思想在程序运行时,先显示提示输入的信息,提示输入数据,输入数据后,按 回车键,从键盘获取数据并存放在从HBCJ和HBP)开始的存储区域中,并在屏幕上显示出输入的原始数据。用冒泡排序实现HBP)存储区的数据的排序后,会有输出的提示信息,然
5、后输出排完序后HBPX中的数据,在输出排完序的数字的时候,进行判断,并将不及格的分数用红色数字输出,最后显示HBP)存储区域中的最小和最大数并输出。在进行最大最小数判断时可以直接从有序数据存储区域HBP)中读取,首项即为最大数,末项即为最小数。2.1.2设计原理在从键盘获取数据时的功能可以通过调用 02H的DOS系统功能调用来实现, AL=!入字符;在屏幕上显示提示信息 的功能可以通过调用09H的DOS系统功能 调用,DS:DX字符串首址(字符串以” $”结束)。在获取数据并存放到HBPX勺存储单元后,通过冒泡排序算法可以实现存储 数据的降序排列实现。在实现红色数字输出的功能时可以通过调用09
6、H的BIOS功能调用来实现,09H调用可以在光标处写字符,其中 BH显示页号,CX二字符计数,AL=欲写字符的 代码,BL=欲写字符的属性或颜色,在每次进行输出前只需要设置属性寄存器的值就可以按照要求在光标处输出字符。2.2系统流程图N键盘输入模块数据排序模块数据显示模块图2.1程序模块流程 图图2.2键盘输入模块图2.3冒泡排序模块N图2.4字符输出模块第3章详细设计3.1数据段的设计3.1.1数据段定义(DATA SEGMENT)中一共定义了 8个常量:MESS、MESS、MESS3MESS4!面存放着每个步骤提示信息字符串;HBCJ HBPX两个存储区域中用于存放排序前和排序后的数据。M
7、AX MIN中分别用来存放排序后数据选取的最大数和最小数堆栈段定义(STACKSEGMENT)代码段定义(CODESEGMENT)3.2主程序的设计与实现主程序main先通过DOS系统功能调用完成提示输入信息的输出,然后调用子程序INPUT来实现通过键盘输入所需数据,并保存在内存单元HBCJ和HBPX中,随后调用SORT子程序实现对原始数据的降序排列,并把排序后的数据存 放在HBPX数据区域中,最后,调用 OUTPU子程序输出排序后的数据,在输出 数据的同时判断数据,如果不及格则实现红色数字输出,并从排序后的数据中取出最大数和最小数并在屏幕上输出。3.3子程序的设计与实现3.3.1键盘输入成绩
8、模块键盘输入成绩由子程序INPUT实现,INPUT主要是用DOS系统功能调用来 获取键盘输入的数据:MOV AH,01H ; 01H功能调用获取键盘输入INT 21H;从键盘读入数据判断输入的数据,从而选择继续输入、保存或者退出输入CMP AL,0DH;判断是否为回车键JZ ENDINPUT;结束输入CMP AL,20H;判断是否为空格JZ SAVE ;保存数据SUB AL,30H ;变为10进制数MOV CL,4SHL BX,CL;左移四位.变为BCD码ADD BL,ALJMP INPUT3.3.2冒泡排序模块对数据的降序排序用冒泡排序算法实现。先用SI存放数据区域HBPX勺偏移地址,然后将
9、SI指向的数据传送到AX中,然后将HBP心储区域的偏移地址 SI加2,指向HBPX中的第二个数数,然后从第二个数开始,依次和AX比较,如果大于AX则交换数据,如果小于 AX则SI继续加2,在第一轮比较完成后,hbpX第一个数据区域中存放的就是最大的数据,然后第二轮从第二个数开始, 先把第二个数放在 AX里面,SI指向第三个数,并依次向后进行比较,每次比 较大小,如果大就交换数据 在进行 14轮后,HBPX存放的就是降序排列 的数据。333,数据输出模块在实现红色字符输出时要用到 BIOS功能调用,在进行输出前,每次从 HBPX中取数,并对 数据和60进行比较,如果小于60则跳转另外的分支,该分
10、 支调用BIOS的09H功能调用实现红色字符的输出,BIOS的09H功能调用中, BH示页号,CX=?符计数,AL=欲写字符的代码,BL=欲写字符的属性或颜色,每 次进行输出前,将要输出数字的 ASCII码放在AL中,并设置好前景色和背景色 后调用09H,就可以将AL中的字符以你设定的颜色输出到屏幕上。MOV AH,09HMOV AL,DLMOV BH,0MOV BL,4MOV CX,1INT 10HMOV AH,3INT 10HMOV AH,2INC DLINT 10H第4章系统调试与操作说明在对程序进行编译,发现有错误和警告:1 在第二行和第三行没有结束标号,2.堆栈定义使用了保留字图4.
11、1 程序编译检查原程序后发现在定义提示信息字符串时忘记加结束符$,并且在定义堆栈段的时候用的系统保留字STACK图4.2程序运行再输入15个需要处理的数据后按回车 键:图4.3程序运行结果可以看到输入的数据已经进行了排序,并输出到了屏幕上,排序后的数据中 不 及格的数据已经用红色标注,并且取出了数据总的最大和最小数也输出到了 屏第5章 设计中存在的问题及解决方法在实现完数据键盘输入和排序以后,设计红色字符输出模块的时候,输出 的就不是原始数据,不及格的数据显示红色但出现数据显示错误错误。在仔细分析了键盘输入模块和数据排序模块的代码后,没有发现问题,就 把问题初步确定在数据显示模块。于是对模块的
12、出口地址,入口地址,交换数据的寄存器,标志位等进行了仔细的分析:图5.1程序调试最后发现在开始数据输出模块的时候,对于模块中用到的寄存器并没有入 栈保护,而每次输出后,寄存器中的数据没有还原导致在进行转换输出的时候出现错误。图5.2程序运行第6章总结与体会冈寸开始拿到课题感觉很简单,但是实际下笔写的时候,遇到的最大的困难 是如何进行键盘输入和保存和排序结果的输出问题,对系统功能调用和BIOS功能调用的使用方法生疏,使得程序设计一度陷入停滞状态,不知如何下手。然后我又重新翻阅了我们的课本,详细学习了常用的系统功能调用和用法,通过对相关内容的学习,我终于对系统功能调用有了详细的认识,在设计程序时也
13、容易了很多。通过这次课程设计,使我对汇编语言的基本知识的使用更加熟练,同时也 增加了我对汇编语言的一些认识,在完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了 很多小程序。但这次是一个综合的程序,平时的很多程序都用到了。历时一周终于完成,其间有不少感触。不少子程序,比如键盘输入程序和排序程序,就是我们平时实验时经常用到的程序,稍加改正,就可以用了,平时的实验也为这次课程设计提供了基础。在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题
14、时,当 我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。不可否认,本程序存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!参考文献:1 徐建民,王东,邵艳华汇编语言程序设计.第2版.北京:电子工业出版社2 钱晓捷,汇编语言程序设计第2版.北京:清华大学出 版社3 杨季文汇编语言程序设计教程清华大学出版社设计者:操时力日 期:2010 年 12 月 31设计过程中质疑(或答辩)记载:1. 在键盘输入模块中,程序是如何实 现将键盘输入转换并保
15、存到BX中?答:在将键盘输入数据保存到BX中的过程中是又两次按键输入组合保存到B;中形成的。例如输入15时,先按下1,程序会先接收1的ASCII码,然后减去0的ASCII码30H得到1的十进制数据,随后会循环左移 四位,将1的BCD码表示为高位即为真是数据的十位,当第二次按下5时,程序会接收5的ASCI码,再减去0的ASCII码30H,得到5的十进制BCD然后加上之前的移位后的 1的BCD码,相加就会得到15的BCD码表示,并存放到BX中。2. 如果要在源程序中加上对原始未排序数据的输出,从而能与排序后数据形成 对比,应该怎么对源程序进行修改?答:如果想要在屏幕上输出显示原始数据的输出,可以在
16、输出排序后数据之前调用打印子程序对未排序数据进行输出,可以再加上一段程序来单独实现对未排序数据的输出:OUT: MOVBX,HBCJSICALL PRINTADD SI,2 DEC CX JNZ OUT JMP SORT指导教师评语:评分:签名:年 月日附录:源程序STACKSEGMENTSTACK ;堆栈段定义STKDB200 DUP(0)STACKENDSDATASEGMENT ;数据段定义MESS1DBPlease in put 15 stude nts scoreMESS2DBThe result of ranking is:$MESS3DB0DH,0AH,The MAX number
17、 is:,$MESS4DB0DH,0AH,The MIN number is:,$HBCJDW15 DUP(0);分配存 放空间HBPXDW15 DUP(0);分配存 放空间MAXDW0MINDW0DATAENDSCODESEGMENT;代码段MAIN PROCFARASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV DX,OFFSETESS1;显示提示输入MOV AH,09HINT 21HXOR BX,BX;寄存器清零XOR CX,CXXOR SI,SIXOR DI,DIINPUT:
18、MOV AH,1INT 21H;从键盘读入数据CMP AL,0DH是否为回车键JZ ENDINPUTCMP AL,20H;是否为空格JZ SAVESUB AL,30H ;变为真数MOV CL,4SHL BX,CL;左移四位.变为BCD码ADD BL,ALJMP INPUTSAVE:MOV HBPXSI,BX ;保存至U HBCJ中ADD SI,2INC DIXOR BX,BXJMP INPUTENDINPUT: MOV HBPXSI,BX;保存最后一个数据INC DIMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSEMESS2;显示输出提示MOV AH,09HINT
19、 21HMOV CX,DIPUSH DIDEC CXXOR BX,BXSUB SI,SI ;SI 清零MOV DX,CXPUSH CXXOR DI,DI ;DI 清零COPY:MOV AX, HBPXSIMOV HBCJDI ,AXADD SI,2ADD DI,2LOOP COPYSUB SI,SI ;SI 清零SUB DI,DI ;DI 清零POP CXSORT:MOV AX, HBPXSI;起泡排序CMP HBPXSI+ 2, AXJNC TEMPADD SI,2DEC DXJNZ SORTJMP SSSTEMP:XCHG AX, HBPXSI+ 2;交换位置MOV HBPXSI,AXADD SI,2DEC DXJNZ SORTJMP SSSSSS:MOV DX,CX ;外循环SUB SI,SIDEC CXJNZ SORTPOP DIJMP OUT_PUTOUT_PUT:MOV BX, HBPXSICALL PRINT ;打印输出ADD SI,2DEC DIJNZ OUT_PUTJMP OUT_RESULTOUT_RESULT:MOV DX,OFFSETESS4;显示输出 MINMOV AH,09
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中政治 第四单元 国际组织 8.3 区域性国际组织说课稿 新人教版选择性必修1
- 2023-2024学年粤教版(2019)高中信息技术必修一《数据与计算》第二章第一节《知识与智慧》说课稿
- 二零二五年度现代农业科技示范项目投标担保合同
- 7上课了 好好学 说课稿-2024-2025学年道德与法治一年级上册统编版
- 2024-2025年新教材高中物理 第5章 第1节 力的合成说课稿 鲁科版必修1
- 二零二五年度环保设备销售专业行纪合同与居间合同分析2篇
- 2024-2025学年高中英语上学期第17周 The First Period Speaking说课稿
- 7两件宝说课稿-2024-2025学年一年级上册语文统编版(2024)001
- 2025至2030年中国数字式液位仪数据监测研究报告
- 2025至2030年中国八仙过海艺术根雕数据监测研究报告
- 个人安全与社会责任的基本知识概述
- 建筑装饰工程计量与计价试题一及答案
- 简易劳务合同电子版
- 明代文学绪论
- 通用税务自查情况说明报告(7篇)
- 体育赛事的策划、组织与实施 体育赛事利益相关者
- 分析化学(高职)PPT完整版全套教学课件
- 晚熟的人(莫言诺奖后首部作品)
- m拱顶储罐设计计算书
- 2023外贸业务协调期中试卷
- 新人教鄂教版(2017)五年级下册科学全册教学课件
评论
0/150
提交评论