《汇编语言课程设计-.pdf》由会员分享,可在线阅读,更多相关《汇编语言课程设计-.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录第 1 章 课程设计目的与要求.11.1 课程设计目的.11.2 课程设计的实验环境.11.3 课程设计的预备知识.11.4 课程设计要求.1第 2 章 课程设计内容.22.1 概述.22.2 总体设计.22.3 程序编码设计.52.4 题目设计源代码的分析与调试.112.5 题目设计程序运行过程及测试结果.12第 3 章课程设计总结.143.1 总结.14参考文献.15辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)1 第 1 章 课程设计目的与要求1.1 课程设计目的本课程实际是计算机科学与技术专业得技术实践课。主要目的是使学生学会微机汇编语言程序的整体设计过程和设计思路,将
2、微机汇编语言程序设计理论应用到实践中去,从而提高学生微机汇编语言程序设计的实践能力,逐步培养学生分析问题、解决问题的能力。同时,经过一周的强化实践,从而使得学生所学的知识能过融会贯通,起到提高综合思考问题、解决问题能力的作用。微机与汇编技术课程主要讲述计算机科学与技术专业研究开发计算机软,硬件技术所需得最快,最有效的微机汇编语言程序设计的基本控制结构,设计方法。与其它计算机原理、编译原理、计算机网络、程序设计得专业课程关系十分密切。本课程设计得目的综合应用学生所学知识,使学生达到熟练掌握微机汇编语言及其程序设计,掌握微机与汇编技术的软硬件设计得基本方法与技巧,培养设计和编制软硬件技术的能力。1
3、.2 课程设计的实验环境硬件环境:IBM-PC机,硬盘 40G以上,内存 256M以上,打印机等。软件环境:Windows 2000 Server 或 Windows XP Server 操作系统,TC,QE等编辑软件。MASM 汇编软件。1.3 课程设计的预备知识微机原理及汇编语言与相关知识。1.4 课程设计要求(1)从功能上对课设题目进行分析;(2)通过小组讨论,确定本开发组得题目目标,这是题目开发的全部基础所在;(3)编写系统(用户)功能设计书,系统功能设计书是题目开发验收得唯一依据;(4)完成程序结构设计,写出设计报告;(5)在规定的实践内,完成模块规划,写出模块接口及主要功能说明,完
4、成功能测试计划;(6)开发并完成系统调试;(7)提交经过测试的系统以及全部文档;(8)提交项目总结报告;辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)2 第 2 章 课程设计内容2.1 概述本次课程设计包含两个题目:1、用子程序编写一个完整的程序2、统计分数段人数程序题目一:用子程序结构编写一个完整的程序:主程序允许用户在键盘上面输入零件数量和价格;子程序SUBCONY把 ASC|码转换成二进制;子程序SUBCALC 计算出零件的单价;子程序 SUBDISP 把二进制表示的单价转换成十进制的数并显示出来。题目二:编程序实设有十个学生的成绩分别为88,65,78,95,85,74,9
5、9,69,78,100,试编制一个子程序统计6069分,7079,8089,9099,100 分的人数,分别存放到以DAT为首地址的单元中。两个题目分别涉及数值运算、字符处理、系统功能调用以及子程序设计等的汇编编程方法。其中子程序设计是两个题目编辑过程的一个重点,大大提高了程序的模块化,而且增加了程序的可读性。程序结构总体上为顺序结构,在实现一些必要功能的时候有用到分支、循环等程序结构,使得整个程序功能简洁、完整。2.2 总体设计程序的总体设计分为三个步骤:总体结构确定、模块关系确定、以及总体结构流程图的确定。其中程序流程图是整个程序实现的重点。现将程序流程图绘制如下:题目一:BCD 码转换成
6、十进制数并输出在屏幕上程序流程图:辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)3 是否为 W 是否为 0 开始SUBDISP 输入名称Y N 输入价格输入数量结束Y N SUBCONY N 是否为是0 Y SUBCALC 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)4 是否为是 W 是否为 0 开始SUBDISP 输入名称Y N 输入价格输入数量结束Y N SUBCONY N 是否为是 0 Y SUBCALC 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)5 题目二:统计十个学生成绩在各个分数段人数程序流程图:2.3 程序编码设计程序编码的设计是继题目任
7、务功能、结构分析之后,根据程序流程图对题目任务用汇编语言实现的过程,整个过程包含多次反复的调试、运行以及修改,然后得到功能完整的程序编码。现在将实现任务的编码部分列出并解释如下:题目一:DATA SEGMENT DAT1 DB PLEASE INPUT NAME OF PROCEPT,THE W REPRESPECT OVER$;输入名称的提示语句CX=0 ALDI 调用子程序将对 应单 元加1 CX=CX-1 输入要 求的分数段输出对应值Y N LEA DI,GRANT 结束返回辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)6 DAT2 DB PLEASE INPUT NUMBE
8、R OF PROCEPT THE 0 REPRESPECT OVER$;输入数量的提示语句 DAT3 DB PLEASE INPUT VALUE OF PROCEPT THE 0 REPRESPECT OVER$输入总价的提示语句 DAT4 DB NAME$输出名称的提示语句 DAT5 DB NUMBER$输出数量的提示语句 DAT6 DB UNIT PRICE$输出单价的提示语句DATA ENDS 数据段定义结束CODE SEGMENT 代码段 ASSUME CS:CODE ASSUME DS:DATA MOV AX,DATA MOV DS,AX LEA DX,DAT1 MOV AH,9 I
9、NT 21H 显示提示性语句 XOR AX,AX MOV AH,1 INT 21H 输入名称 CMP AL,57H 比较是否为 W JZ OVER MOV BH,AL MOV AH,2 MOV DL,0DH INT 21H 回车 MOV DL,0AH INT 21H 换行 LEA DX,DAT2 MOV AH,9 INT 21H 显示提示性语句 XOR AX,AX MOV AH,1 INT 21H 输入数量 CMP AL,30H 比较是否为 0 JZ OVER MOV BL,AL MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H LEA DX,DAT
10、3 输入提示下那个语句 MOV AH,9 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)7 INT 21H XOR AX,AX MOV AH,1 INT 21H 输入总价 CMP AL,30H 比较是否为 0 JZ OVER MOV CH,AL MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H CALL SUBCONY 调用 SUBCONY CALL SUBCALC 调用 SUBCALC CALL SUBDISP 调用 SUBDISP OVER:MOV AH,4CH INT 21H SUBCONY子程序SUBCONY PROC NEAR
11、SUB CH,30H 将 ASC|码转换为二进制 SUB BL,30H RET SUBCONY ENDP SUBCALC 子程序SUBCALC PROC NEAR XOR AH,AH MOV AL,CH 求出单价 CBW DIV BL MOV CH,AL RET SUBCALC ENDP SUBDISP 子程序SUBDISP PROC NEAR LEA DX,DAT4 输出提示性语句 MOV AH,9 INT 21H 输出名称 MOV AH,2 MOV DL,BH INT 21H 回车 MOV AH,2 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)8 MOV DL,0DH INT
12、 21H 换行 MOV DL,0AH INT 21H LEA DX,DAT5 MOV AH,9 INT 21H 输出提示性语句 ADD BL,30H 将二进制转换为 ASC|码 MOV AH,2 MOV DL,BL INT 21H 输出数量 MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H LEA DX,DAT6 输出提示性语句 MOV AH,9 INT 21H ADD CH,30H MOV AH,2 MOV DL,CH INT 21H 输出单价 RET SUBDISP ENDP CODE ENDS 结束 END 题目二:DSEG SEGMENT G
13、RADE DB 88,65,78,95,85,74,99,69,78,100 ;分数存放在 GRADE 存储单元DAT DB 0,0,0,0,0 ;DAT存放各分数段人数NOTICE1 DB INPUT A NUMBER,1 REPRESPECT 60-69,,2 REPRESPECT 70-79,3 REPRESPECT 80-89,4 REPRESPECT 90-99,5 REPRESPECT 100,$;输入提示性语句NOTICE2 DB THE NUMBER IS$;输出提示性语句辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)9 DSEG ENDS CSEG SEGMENT
14、 ASSUME DS:DSEG,CS:CSEG STA:MOV AX,DSEG MOV DS,AX MOV DI,OFFSET GRADE ;DI指向所取分数单元地址 MOV CX,10 ;循环次数 LEA SI,DAT ;DI用于存储分数段AGIN:MOV AL,DI XOR BX,BX CALL COMP ;比较放入各分数段中 INC DI LOOP AGIN ;循环 MOV AH,09H LEA DX,NOTICE1 ;输出提示性语句 INT 21H MOV AH,2 MOV DL,0AH INT 21H ;换行 MOV AH,1 INT 21H ;输入要求的分数段 SUB AL,30H
15、 ;ASC|变成二进制数 XOR BX,BX MOV BL,AL MOV AH,2 MOV DL,0AH INT 21H MOV AH,09H 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)10 LEA DX,NOTICE2 ;输出提示性语句 INT 21H MOV AH,02H MOV DL,SI+BX-1 ADD DL,30H INT 21H ;根据输入单元号,显示对应分数段人数 MOV AH,4CH INT 21H;子程序,用于比较出在哪个分数段。COMP PROC CMP AL,69 JA C1 INC BYTE PTRSI JMP EXI C1:CMP AL,79 JA
16、C2 INC BYTE PTRSI+1 JMP EXI C2:CMP AL,89 JA C3 INC BYTE PTRSI+2 JMP EXI C3:CMP AL,99 JA C4 INC BYTE PTRSI+3 JMP EXI C4:INC BYTE PTRSI+4 EXI:RET COMP ENDP 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)11 CSEG ENDS END STA;程序结束2.4 题目设计源代码的分析与调试题目一:(1)题目一中要求输入名称,数量和总价,由于是随机输入,因此要判断操作者是否想要结束执行,因此设置了结束条件,由键盘输入的是ASC|码,因此在
17、求出单价前,要将 ASC|码转化成二进制数,而后在输出时,再将二进制数转换成ASC|码输出。(2)题目中最关键也是最困难的一个问题是要将总价存在一个安全的位置,例如,在刚开始时,我将其直接存储在AL中,结果导致输出错误,这是程序运行过程中AL值遭改变造成的,后来将其放在DL中,这个问题就解决了。另外遇到的一个问题就是排版问题,刚开始时几乎没有什么排版,在孙老师的提示下,我又对程序做了很大的修改,使得程序更加具有可读性,排版也更加美观。题目二:(1)本题要将 10 个成绩统计各个分数段的人数,10 个分数放在 GRADE 单元;各个分数段统计单元顺序排列,以便操作;以DAT为首地址五个单元是存放
18、各个分数段统计人数的单元,并具有说明字符。(2)题目中判断各个分数属于哪个分数段采用子函数调用,大大简化程序的设计,并且增加了程序的可读性:COMP PROC CMP AL,69 JA C1 INC BYTE PTRSI JMP EXI C1:CMP AL,79 JA C2 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)12 INC BYTE PTRSI+1 JMP EXI C2:CMP AL,89 JA C3 INC BYTE PTRSI+2 JMP EXI C3:CMP AL,99 JA C4 INC BYTE PTRSI+3 JMP EXI C4:INC BYTE PTRSI
19、+4 EXI:RET COMP ENDP CSEG ENDS END STA 其主要思想是将 AL(AL 中存放 GRADE 中的一个分数)中的数分别与 60100(分为五个段,如 6069为一个段)进行比较,最后确定出它属于哪个段,然后将对应段值将1。2.5 题目设计程序运行过程及测试结果程序编写完后就要运行、调试,以确定程序不合理的地方,根据运行结果调试,修改最终形成一个完整、合理的程序。本程序运用MASM5 软件进行调试,调试时首先要进入MASM5 软件的这个文件夹,并在其编写环境 EDIT下编写。编写好后,就可以进行通过 MASM命令进行调试;调试成功后在通过LINK 命令链接;链接成
20、功后就可执行.EXE 文件。具体过程如下:程序一:SY8 的调试辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)13 SY8 的链接SY8的运行结果程序二:SY9的调试 SY9 的链接 SY9 的运行辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)14 第 3 章课程设计总结3.1 总结经过的本次的微机原理与汇编语言课程设计,我计算机的内部结构、数据存储方式等有了更深入的了解,此外在对汇编语言的使用过程中,利用DEBUG 软件的调试功能,体会到了指令在计算机内部执行过程的整体架构,这对将来有志从事计算机专业方向的我来讲是个不小的收获。程序的编写过程同样让我受益匪浅,让我感触
21、最深的有两点,也是指导老师焦老师以及瞿老师给我指导的两点-画程序流程图以及对程序进行实时注释。这两点在我此前的实践过程中做的并不足,因为题目涉及的难度没有此次大。而这一次课设,在最初构思时,由于没有做到以上两点,总是在编写代码时,由于没有程序流程图的指导使得思路不清晰,一边写程序一边犯错误导致总体架构偏离初衷;犯错误后由于没有实时对代码进行注释,这导致了在分析程序功能错误上花费不少精力,要对代码量不少的程序从头再一点点分析,着实麻烦不少。当然在此次课设中也让我感觉到自己对课本上的知识理解还不是很好,还有很多知识点没有掌握,通过这次实践使我对课本上的知识有了更进一步的理解,同时也锻炼了我的分析问
22、题和解决问题的能力。同时我还学到,在真正动手做一件事情之前一定要为自己的后续工作作好充分准备,通过与同学的交流和老师的帮助以及通过查找资料,会让自己更胸有成竹,对全局设计有个更好的把握。通过这次设计使我相信,只要自己在每一次实践中仔细思考,找好方法,有条理的计划好整个过程,那么无论是失败还是成功一定会有所收获。课程设计的时间虽然很短,但让我学会了很多东西,理论结合实际,验证了书上的理论,更重要的是使自己增强了实践的能力,为以后的学习奠定了基础。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论文)15 参考文献1 方立友.微机原理与汇编语言.北京:清华大学出版社,2006 年 12 月2 周明德.微机原理与接口技术.北京:人民邮电出版社,2006 年 12 月3 王成.计算机组成原理实验指导书与习题集.北京:清华大学出版社,2000 年 4 月4 张代远.计算机组成原理教程.北京:清华大学出版社,2005 年 6 月5 朱家铿.计算机组成原理.沈阳:东北大学出版社,2000 年 3 月6 王爱英.计算机组织与结构.北京:清华大学出版社,1998 年 7 月7 唐塑飞.计算机组成原理.北京:高等教育出版社,2000 年 9 月