汇编语言课程设计.docx
- 文档编号:2462696
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:15
- 大小:143.42KB
汇编语言课程设计.docx
《汇编语言课程设计.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计
目录
第1章课程设计目的与要求3
1.1课程设计目的3
1.2课程设计的实验环境3
1.3课程设计的预备知识3
1.4课程设计要求3
第2章课程设计内容4
2.1概述4
2.2总体设计4
2.3程序编码设计7
2.4题目设计源代码的分析与调试13
2.5题目设计程序运行过程及测试结果14
第3章课程设计总结16
3.1总结16
参考文献17
第1章课程设计目的与要求
1.1课程设计目的
本课程实际是计算机科学与技术专业得技术实践课。
主要目的是使学生学会微机汇编语言程序的整体设计过程和设计思路,将微机汇编语言程序设计理论应用到实践中去,从而提高学生微机汇编语言程序设计的实践能力,逐步培养学生分析问题、解决问题的能力。
同时,经过一周的强化实践,从而使得学生所学的知识能过融会贯通,起到提高综合思考问题、解决问题能力的作用。
微机与汇编技术课程主要讲述计算机科学与技术专业研究开发计算机软,硬件技术所需得最快,最有效的微机汇编语言程序设计的基本控制结构,设计方法。
与其它计算机原理、编译原理、计算机网络、程序设计得专业课程关系十分密切。
本课程设计得目的综合应用学生所学知识,使学生达到熟练掌握微机汇编语言及其程序设计,掌握微机与汇编技术的软硬件设计得基本方法与技巧,培养设计和编制软硬件技术的能力。
1.2课程设计的实验环境
硬件环境:
IBM-PC机,硬盘40G以上,内存256M以上,打印机等。
软件环境:
Windows2000Server或WindowsXPServer操作系统,TC,QE等编辑软件。
MASM汇编软件。
1.3课程设计的预备知识
微机原理及汇编语言与相关知识。
1.4课程设计要求
(1)从功能上对课设题目进行分析;
(2)通过小组讨论,确定本开发组得题目目标,这是题目开发的全部基础所在;
(3)编写系统(用户)功能设计书,系统功能设计书是题目开发验收得唯一依据;
(4)完成程序结构设计,写出设计报告;
(5)在规定的实践内,完成模块规划,写出模块接口及主要功能说明,完成功能测试计划;
(6)开发并完成系统调试;
(7)提交经过测试的系统以及全部文档;
(8)提交项目总结报告;
第2章课程设计内容
2.1概述
本次课程设计包含两个题目:
1、用子程序编写一个完整的程序
2、统计分数段人数程序
题目一:
用子程序结构编写一个完整的程序:
主程序允许用户在键盘上面输入零件数量和价格;子程序SUBCONY把ASC||码转换成二进制;子程序SUBCALC计算出零件的单价;子程序SUBDISP把二进制表示的单价转换成十进制的数并显示出来。
题目二:
编程序实设有十个学生的成绩分别为88,65,78,95,85,74,99,69,78,100,试编制一个子程序统计60~69分,70~79,80~89,90~99,100分的人数,分别存放到以DAT为首地址的单元中。
两个题目分别涉及数值运算、字符处理、系统功能调用以及子程序设计等的汇编编程方法。
其中子程序设计是两个题目编辑过程的一个重点,大大提高了程序的模块化,而且增加了程序的可读性。
程序结构总体上为顺序结构,在实现一些必要功能的时候有用到分支、循环等程序结构,使得整个程序功能简洁、完整。
2.2总体设计
程序的总体设计分为三个步骤:
总体结构确定、模块关系确定、以及总体结构流程图的确定。
其中程序流程图是整个程序实现的重点。
现将程序流程图绘制如下:
题目一:
BCD码转换成十进制数并输出在屏幕上
程序流程图:
题目二:
统计十个学生成绩在各个分数段人数
程序流程图:
2.3程序编码设计
程序编码的设计是继题目任务功能、结构分析之后,根据程序流程图对题目任务用汇编语言实现的过程,整个过程包含多次反复的调试、运行以及修改,然后得到功能完整的程序编码。
现在将实现任务的编码部分列出并解释如下:
题目一:
DATASEGMENT
DAT1DB'PLEASEINPUTNAMEOFPROCEPT,THEWREPRESPECTOVER$';输入名称的提示语句
DAT2DB'PLEASEINPUTNUMBEROFPROCEPTTHE0REPRESPECTOVER$';输入数量的提示语句
DAT3DB'PLEASEINPUTVALUEOFPROCEPTTHE0REPRESPECTOVER$'输入总价的提示语句
DAT4DB'NAME$'输出名称的提示语句
DAT5DB'NUMBER$'输出数量的提示语句
DAT6DB'UNITPRICE$'输出单价的提示语句
DATAENDS数据段定义结束
CODESEGMENT代码段
ASSUMECS:
CODE
ASSUMEDS:
DATA
MOVAX,DATA
MOVDS,AX
LEADX,DAT1
MOVAH,9
INT21H显示提示性语句
XORAX,AX
MOVAH,1
INT21H输入名称
CMPAL,57H比较是否为W
JZOVER
MOVBH,AL
MOVAH,2
MOVDL,0DH
INT21H回车
MOVDL,0AH
INT21H换行
LEADX,DAT2
MOVAH,9
INT21H显示提示性语句
XORAX,AX
MOVAH,1
INT21H输入数量
CMPAL,30H比较是否为0
JZOVER
MOVBL,AL
MOVAH,2
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
LEADX,DAT3输入提示下那个语句
MOVAH,9
INT21H
XORAX,AX
MOVAH,1
INT21H输入总价
CMPAL,30H比较是否为0
JZOVER
MOVCH,AL
MOVAH,2
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
CALLSUBCONY调用SUBCONY
CALLSUBCALC调用SUBCALC
CALLSUBDISP调用SUBDISP
OVER:
MOVAH,4CH
INT21H
SUBCONY子程序
SUBCONYPROCNEAR
SUBCH,30H将ASC||码转换为二进制
SUBBL,30H
RET
SUBCONYENDP
SUBCALC子程序
SUBCALCPROCNEAR
XORAH,AH
MOVAL,CH求出单价
CBW
DIVBL
MOVCH,AL
RET
SUBCALCENDP
SUBDISP子程序
SUBDISPPROCNEAR
LEADX,DAT4输出提示性语句
MOVAH,9
INT21H输出名称
MOVAH,2
MOVDL,BH
INT21H回车
MOVAH,2
MOVDL,0DH
INT21H换行
MOVDL,0AH
INT21H
LEADX,DAT5
MOVAH,9
INT21H输出提示性语句
ADDBL,30H将二进制转换为ASC||码
MOVAH,2
MOVDL,BL
INT21H输出数量
MOVAH,2
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
LEADX,DAT6输出提示性语句
MOVAH,9
INT21H
ADDCH,30H
MOVAH,2
MOVDL,CH
INT21H输出单价
RET
SUBDISPENDP
CODEENDS结束
END
题目二:
DSEGSEGMENT
GRADEDB88,65,78,95,85,74,99,69,78,100;分数存放在GRADE存储单元
DATDB0,0,0,0,0;DAT存放各分数段人数
NOTICE1DB'INPUTANUMBER,1REPRESPECT60-69,,2REPRESPECT70-79,3REPRESPECT80-89,4REPRESPECT90-99,5REPRESPECT100,$';输入提示性语句
NOTICE2DB'THENUMBERIS$';输出提示性语句
DSEGENDS
CSEGSEGMENT
ASSUMEDS:
DSEG,CS:
CSEG
STA:
MOVAX,DSEG
MOVDS,AX
MOVDI,OFFSETGRADE;DI指向所取分数单元地址
MOVCX,10;循环次数
LEASI,DAT;DI用于存储分数段
AGIN:
MOVAL,[DI]
XORBX,BX
CALLCOMP;比较放入各分数段中
INCDI
LOOPAGIN;循环
MOVAH,09H
LEADX,NOTICE1;输出提示性语句
INT21H
MOVAH,2
MOVDL,0AH
INT21H;换行
MOVAH,1
INT21H;输入要求的分数段
SUBAL,30H;ASC||变成二进制数
XORBX,BX
MOVBL,AL
MOVAH,2
MOVDL,0AH
INT21H
MOVAH,09H
LEADX,NOTICE2;输出提示性语句
INT21H
MOVAH,02H
MOVDL,[SI+BX-1]
ADDDL,30H
INT21H;根据输入单元号,显示对应分数段人数
MOVAH,4CH
INT21H
;子程序,用于比较出在哪个分数段。
COMPPROC
CMPAL,69
JAC1
INCBYTEPTR[SI]
JMPEXI
C1:
CMPAL,79
JAC2
INCBYTEPTR[SI+1]
JMPEXI
C2:
CMPAL,89
JAC3
INCBYTEPTR[SI+2]
JMPEXI
C3:
CMPAL,99
JAC4
INCBYTEPTR[SI+3]
JMPEXI
C4:
INCBYTEPTR[SI+4]
EXI:
RET
COMPENDP
CSEGENDS
ENDSTA
;程序结束
2.4题目设计源代码的分析与调试
题目一:
(1)题目一中要求输入名称,数量和总价,由于是随机输入,因此要判断操作者是否想要结束执行,因此设置了结束条件,由键盘输入的是ASC||码,因此在求出单价前,要将ASC||码转化成二进制数,而后在输出时,再将二进制数转换成ASC||码输出。
(2)题目中最关键也是最困难的一个问题是要将总价存在一个安全的位置,例如,在刚开始时,我将其直接存储在AL中,结果导致输出错误,这是程序运行过程中AL值遭改变造成的,后来将其放在DL中,这个问题就解决了。
另外遇到的一个问题就是排版问题,刚开始时几乎没有什么排版,在孙老师的提示下,我又对程序做了很大的修改,使得程序更加具有可读性,排版也更加美观。
题目二:
(1)本题要将10个成绩统计各个分数段的人数,10个分数放
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计