课 程 设 计 说 明 书
题目:
简单计算器
院
系:
专业班级:
学
号:
学生姓名:
指导教师:
2010 年 12 月 31 日
安徽理工大学课程设计(论文)任务书
计算机科学与工程学院
硬件 教研室
学 号
学生姓名
专业(班级)
题目一:判断闰年
题目二: 简单计算器√
题目三: 代码转换程序
题目四:字符图形程序
题目五: 学生成绩管理
题目六: 打字练习
1. 熟悉汇编指令、宏汇编语言的编程方法
2. BIOS 中断调用、系统功能中断调用方法
3. 磁盘文件、及文件内容操作
题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、
系统功能调用、系统数据处理、文件数据处理而设计的,是对所学课程
知识较为系统的应用。
由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重
点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。
不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善的程
序。
另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师
审查同意后也可作为课程设计的题目。
1. 完成所选题目的软件设计;
2. 课程设计说明书 1000 字(不包括程序源代码)左右。
第 1 次熟悉软件环境。第 2 次绘制程序流程图。第 3 次用编写程序。
第 4 次用调试运行程序。第 5 次编写课程设计说明书
[1] 李敬兆.8086/8088 和基于 ARM 核汇编语言程序设计.合肥:中国科技
大学出版社,2008
[2] 洪 志 全 , 罗 省 贤 . 汇 编 语 言 程 序 设 计 教 程 . 北 京 : 电 子 工 业 出 版
社,2004
设
计
题
目
设
计
技
术
参
数
设
计
要
求
工
作
量
工
作
计
划
参
考
资
料
指导教师签字
教研室主任签字
2010 年 12 月 17 日
安徽理工大学课程设计(论文)成绩评定表
指导教师评语:
成绩:
指导教师:
年
月 日
摘 要
本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次
可执行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、
乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,
加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,
操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算
的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个
程序模块后,通过程序的调用最终实现一个简单的计算器。
关键词:计算器,汇编语言,四则运算,功能模块,调用
目录
1 设计目的.............................................................................................................1
2 概要设计.............................................................................................................2
2.1 系统总体分析 ....................................................................................................................................2
2.2 程序流程图及说明 ............................................................................................................................3
3 详细设计.............................................................................................................5
3.1 主模块及子模块说明........................................................................................................................5
3.2 各模块详细设计................................................................................................................................7
4 程序调试........................................................................................................... 11
4.1 运行界面分析 ..................................................................................................................................11
4.2 调试过程及分析..............................................................................................................................11
5 心得体会...........................................................................................................13
5.1 设计体会 ..........................................................................................................................................13
5.2 系统改进 ..........................................................................................................................................13
参考文献..............................................................................................................15
I
1 设计目的
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。同时,汇
编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,
对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。至于很多
需要直接控制硬件的应用场合,则更是非用汇编语言不可。由于汇编语言如此地
接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。用汇编语言
编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言
其程序速度更无法与汇编语言程序同日而语。
本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个
程序,每运行一次可执行程序,可以实现加减乘除四则运算。计算器是最简单的
计算工具,简单计算器具有加、减、乘、除四项运算功能。通过使用汇编语言设
计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘
除相关指令以及模块的调用等汇编语言知识的有效运用。本次课程设计以实现一
个基本功能完善,界面友好,操作简便易行的计算器为最终目的。通过对具有加
减乘除基本功能的计算器的设计实现,学会使用汇编语言实现输入输出模块的设
计,模块合理调用的设计,加减乘除运算的判断以及退出程序的判断的设计。通
过对各种指令的合理使用,熟悉并加深对各种指令的用法。学会使用汇编语言设
计各个功能模块。当实现各个程序模块后,学会通过程序的调用最终实现一个具
有基本计算功能的简单计算器。
1
2 概要设计
2.1 系统总体分析
本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个
程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制
数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对
于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己
调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运
算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们
还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进
位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
第一步,我要解决的是输入时是用 INT 21H 的 10 号功能调用还是用 INT 21H
的 1 号功能调用来进行输入。若是用 10 号功能调用则我们进行多字符输入,可
以将输入的字符都存储到一个数据区里面,并调用 9 号功能调用输出存进去的字
符,这种输入和输出的方案是可行的。我选择的是利用 1 号功能调用来输入,即
把单个字符一个个的输入并存储到一个数据区里。我们要做的是两个数的运算,
先认定输入的格式为 1234+5678=或者 1111*2222=,当然如果输入不是这样的格
式计算出来的结果就不一定是我们想要的结果了。在存储的时候也是有选择的存
储,当输入的并非格式里所要求的字符时则报错。
第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运
算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中
的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来
与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算
模块进行计算。
第三步,根据计算器程序所要实现的功能完成各个功能模块。设计程序主体
部分,根据主体部分所需的功能模块对各个子模块一一进行设计编写。子模块中
包含有:do_add 加法运算模块,do_sub 减法运算模块,do_mul 乘法运算模块,
do_div 除法运算模块,input 输入模块等。
最后还要对这个简易计算器进行功能完善。为了使程序符合我们使用者的操
作习惯,设计当用户根据提示信息输入一个算式后,按下 enter 键或是‘=’符
号键时,程序依据输入的算式进行计算,并将结果显示在屏幕上。如果用户输入
错误,则返回,提示信息让用户重新输入算式,当用户按下 Q 或 q 键时退出程序。
在各个子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具
有简单运算功能的计算器。
2
2.2 程序流程图及说明
此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同
时也是我编写的程序的一个总体的框架。
程序流程图说明:通过流程图,可以看出程序开始运行时,首先输出提示语
句,当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调
用哪个功能模块,首先要判断输入的字符是否为 Q 或 q,若是,则退出程序,不
是则继续输入。还要判断输入的是否为 0--9,‘+’,‘-’,‘*’,‘/’这些字符,
若不是会报错,是则将根据运算符号调用相应的功能模块完成运算。最后将运算
的结果显示在屏幕上,并返回主题程序,使用户可以重新输入。
程序流程图如图 2-1 所示:
3