汇编语言课程设计报告.docx
- 文档编号:2855663
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:24
- 大小:218.50KB
汇编语言课程设计报告.docx
《汇编语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《汇编语言课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
汇编语言课程设计报告
汇编语言课程设计报告
(2010--2011年度第2学期)
实现加减乘除四则运算的计算器
专业
计算机科学与技术(网络工程)
学生姓名
郭月月
班级
B计算机091
学号
0910704107
指导教师
王志宏
完成日期
2011年6月23日
目录
1概述1
1.1课程设计目的1
1.2课程设计内容1
2系统需求分析1
2.1系统目标1
2.2主体功能2
3系统概要设计2
3.1系统的功能模块划分2
3.2系统流程图3
4系统详细设计4
5测试5
5.1正确输出5
5.2实际输出6
6小结6
参考文献8
附录9
附录1源程序清单9
实现加减乘除四则运算计算器的设计
1概述
1.1课程设计目的
运用汇编语言,实现简单计算器的一般功能.通过该程序设计,让我们熟悉并掌握DOS系统功能调方法用及BIOS系统功能调用方法,同时在程序设计过程中熟悉并掌握各种指令的应用,知道编程的具体流程,以及掌握DEBUG的一系列的功能执行命令,及用它进行调试,运行功能。
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
由于汇编语言如此的接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。
由此可见汇编语言的重要性,学好这门课程,同样可为相关的专业打下基础。
汇编语言程序设计课程设计是在教学实践基础上进行的一次试验,也是对该课程所学理论知识的深化和提高。
因此,要求学生能综合应用所学知识,设计和制造出具有具有一定功能的应用系统,并且在实验的基本技能方面进行了一次全面的训练。
此外,它还可以培养学生综合运用所学知识独立完成汇编程序课题的能力,使学生能够较全面的巩固和应用课堂上所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
它同样可以提高学生运用理论去处理实际问题的能力和独立思考的能力,使学生的编程思想和编程能力有所提高,最终达到熟练地掌握编写汇编源程序的基本方法的目的。
1.2课程设计内容
设计一个能实现加减乘除取余计算的程序。
将键盘输入的表达式预放入一缓冲区中,然后从该缓冲区的第一个字符开始读取判断,当读到一个有效的表达式时对表达式进行相应的运算后,输出用十六进制数表示的运算结果。
2系统需求分析
2.1系统目标
1.熟悉汇编指令、宏汇编语言的编程方法
2.BIOS中断调用、系统功能中断调用方法
3.磁盘文件、及文件内容操作
目标:
要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
2.2主体功能
要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
使用说明:
(1)按照提示选择数字1,2,3,4.
(2)1:
加法ADD。
(3)2:
减法SUB。
(4)3:
乘法MUL。
(5)4:
除法DIV。
(6)输入一个小于四位的任意进制的数,回车。
(7)再输入一个小于四位的任意进制的数,回车。
(8)显示结果。
(9)退出按Q,选择Y或N。
3系统概要设计
3.1系统的功能模块划分
图3-1概要模块
(1)界面设置
主要实现确定界面样式的功能,以菜单形式显示。
(2)选择算法设置
用于选择加、减、乘、除法来进行运算。
(3)十进制转换设置
应用十进制的转换算法来处理加、减、乘、除法四则运算。
3.2系统流程图
图4-3四则运算计算器操作流程
4系统详细设计
4.1界面设置
通过定义数据段,利用09H显示出功能列表。
通过定义数据段,以字符串的形式输入每个提示信息,利用09H键盘输入并回显命令显示每一个功能提示,是计算器的功能列表有序清晰的显示在屏幕上。
4.2选择算法设置
首先选择要进行的四则运算,若选择1,则进行加法;若选择2,则进行减法;若选择3,则进行乘法;若选择4,则进行除法。
加法:
先输入第一个小于4位十六进制数存入SI中,在输入第二个小于4位十六进制数存入BX中,然后显示BX和[SI]中的内容相加存在BX中。
减法:
先输入第一个小于4位十六进制数存入SI中,在输入第二个小于4位十六进制数存入BX中,然后显示BX和[SI]中的内容相减存在BX中,然后用NEG来求反,即为第一个数减去第二个数的差,显示BX的内容即为差。
乘法:
先输入第一个小于4位十六进制数存入SI中,在输入第二个小于4位十六进制数存入BX中,把BX的值给AX,然后让AX乘以[SI],然后再分别将DX,AX中的内容赋给BX,接着依次显示DX,AX的内容,即为积。
除法:
先输入第一个小于4位十六进制数存入SI中,在输入第二个小于4位十六进制数存入BX中,将[SI]赋给AX作被除数,让BX作除数,得到的商存放在AX中,余数放在DX中,然后依次赋给BX,将其依次显示即为商。
4.3十进制转换设置
要完成十进制转换成十六,一般采用除十六取余法来完成,其大致过程如下:
将待转换的数除以16得到第一个商和余数,此第一个余数就是所求的十六进制数的各位,再用第一个商除以16,得到第二个商和余数,此第二个余数就是所求十六进制数的十位,重复这一过程直至商为0,此时的余数就是所求十六进制数的最高位。
在内存中分配一缓冲区,用来存放以上分离出来的使十进制数的每一位,然后再逐个转换成ASCII码,转换成ASCII码的过程很简单,就是给每个十六进制位加上30H即可,最后送显示器输出。
5测试
5.1正确输出
图5-1加法、减法的运算的截图
图5-2除法、乘法的运算及退出程序的截图
5.2实际输出
图5-3加法、减法的运算的截图
图5-4除法、乘法的运算及退出程序的截图
6小结
汇编语言的课程设计即将结束,这门课程在检验我们学习成绩的同时,也检验了我们的学习效果。
我要设计的是一种实现加减乘除四则运算的计算器,用到了很多的基本知识,但是在程序运行的过程中总是出现这样那样的问题,有时是打错了程序代码,有时是我理解错了知识点,导致程序错误。
但庆幸的是,最后问题都一一的被解决。
通过了这次设计,更加深了我对汇编语言的使用技巧,和做事的认真态度。
汇编语言作为一种低级语言,编写程序起来本来就很吃力,很多很少用的几种指令和代码增大了设计的难度但最终我完成了它,为此我感到很开心。
本次课程设计我有不少收获:
在选好了题目之后我查阅了一些资料,用以加深我对汇编语言的认识;在往后的一周上机实践中,对汇编语言源程序的编辑、汇编、连接和调试的全过程愈加熟悉;在不断地求解过程中,了解到了汇编语言的一些特点,感觉到汇编语言的执行效率非常高,由于汇编是对底层的操作,这一点决定了它在代码的产量方面不如一些高级语言。
而且通过本次课程设计,我不仅对课本上的基础知识有了更近一步的认识,自己的动手操作能力也得到了很大的提高。
总体来说这次课程设计还可以,虽说我对于汇编语言的理解并不够深,但最终能做出来,还真的挺满意,很开心。
参考文献
[1]花小朋,刘其明,王一飞. 《汇编语言程序设计教程》(第一版)[M].徐州:
中国矿业大学出版社,2010
[2]王爽. 《汇编语言》[M].北京:
清华大学出版社,2008
[3]徐建民.《汇编语言程序设计》[M].北京:
电子工业出版社,2001
[4]曹加恒等编.《新一代汇编语言课程设计》.北京:
高等教育出版社,2003.6
[5]杨路明等编.《汇编语言程序设计》.长沙:
中南大学出版社,2005.8
附录
附录1源程序清单
B_PEQUBYTEPTR
W_PEQUWORDPTR
D_PEQUDWORDPTR
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
ORG100H
NEWSTAR:
JMPSTAR
EVEN
NUM1DW0,0
NUM2DW0,0
NUM3DW0,0
JGV4DW0,0
YSFLABELWORD
YSF1DB0
YSF2DB0
JUVDB0
UVDB0
;使DS:
SI指向第一有效字符
OVERSLABELNEAR
CLD
PUSHAX
OVERS1:
LODSB
CMPAL,''
JZOVERS1
CMPAL,9
JZOVERS1
DECSI
CMPAL,13
POPAX
RET
;输出一个制表符
TABLABELNEAR
MOVAL,9
JMPSHORTDISP
;输出一个回车换行符
CRLFLABELNEAR
MOVAL,13
CALLDISP
MOVAL,10
;显示一个字符
DISPLABELNEAR
PUSHAX
PUSHDX
MOVAH,2
MOVDL,AL
INT21H
POPDX
POPAX
RET
;检查是否为运算符
ISYSFLABELNEAR
CLD
LODSB
CALLISJJ
JZISYSF1
CALLISII
JZISYSF1
DECSI
ISYSF1:
RET
;检查是否是加减运算
ISJJLABELNEAR
CMPAL,'+'
JZISYSF1
CMPAL,'-'
RET
;检查是否为乘除运算
ISIILABELNEAR
CMPAL,'*'
JZISYSF1
CMPAL,'/'
JZISYSF1
CMPAL,'\'
RET
;数据输出
;CX=10十进制
;CX=16十六进制
DOUTLABELNEAR
PUSHAX
PUSHBX
PUSHDX
PUSHBP
XORBP,BP
DOUT1:
INCBP
PUSHAX
MOVAX,DX
XORDX,DX
DIVCX
MOVBX,AX
POPAX
DIVCX
PUSHDX
MOVDX,BX
ORBX,AX
JNZDOUT1
DOUT2:
POPAX
ADDAL,'0'
CMPAL,'9'
JBEDOUT3
ADDAL,'A'-'9'-1
DOUT3:
CALLDISP
DECBP
JNZDOUT2
POPBP
POPDX
POPBX
POPAX
RET
;输入数据在DX:
AX中返回
;CX=0数据为10进制
;CX#0数据为16进制
DATELABELNEAR
PUSHBX
PUSHBP
PUSHDI
XORAX,AX
XORDX,DX
DATE1:
MOVDI,AX
LODSB
CMPAL,'0'
JBDATE7
CMPAL,'9'
JADATE6
DATE2:
ANDAX,0FH
SHLDI,1
RCLDX,1
MOVBX,DI
MOVBP,DX
SHLDI,1
RCLDX,1
SHLDI,1
RCLDX,1
JCXZDATE3
SHLDI,1
RCLDX,1
JMPSHORTDATE4
DATE3:
ADDDI,BX
ADCDX,BP
DATE4:
ADDAX,DI
ADCDX,0
JMPDATE1
DATE5:
ADDAL,9
JMPDATE2
DATE6:
JCXZDATE7
CMPAL,'A'
JBDAT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 报告