汇编语言课程设计报告——实现加减乘除四则运算的计算器11104.pdf
《汇编语言课程设计报告——实现加减乘除四则运算的计算器11104.pdf》由会员分享,可在线阅读,更多相关《汇编语言课程设计报告——实现加减乘除四则运算的计算器11104.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-.-.可修编-汇编语言课程设计报告(2011-2012 年度第 2 学期)实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生 班级 *指导教师 完成日期 -.-.可修编-目 录 目录 2 1 概述 1 1.1 设计目的 1 1.2 设计容 1 2 系统需求分析 1 2.1 系统目标 1 2.2 主体功能 1 2.3 开发环境 1 3 系统概要设计 2 3.1 系统的功能模块划分 2 3.2 系统流程图 3 4 系统详细设计 3 5 测试 4 5.1 测试方案 4 5.2 测试结果 4 6 小结 4 参考文献 5 附录 6 附录源程序清单 6.实现加减乘除四则运算的计算器 1 概 述
2、1.1 设计目的 本课程设计是在学完教学大纲规定的全部容、完成所有实践环节的根底上,旨在深化学生学习的汇编语言课程根本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。1.2 设计容 能实现加、减、乘、除的计算;该程序承受的是 16 进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:c:tasmjs 3+2 5 2 系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比方,十进制数的加减乘除四则运算。我们曾经学习过两个
3、具体数字进展加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进展运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进展输出,如何实现清屏等也是要解决的问题。2.2 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创立应用程序。本设计的功能如下:1、输入 2 个数,先判断是加减运算还是乘除运算,
4、再进展计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 2.3 开发环境 TASM5.0 集成环境-.-.可修编-3 系统概要设计 3.1 系统的功能模块划分 此题目实现的模块图如图 3-1 所示 图 3-1 概要模块(1)界面设置 主要实现确定界面样式的功能,以菜单形式显示。(2)选择算法设置 用于选择加、减、乘、除法来进展运算。(3)十进制转换设置 应用十进制的转换算法来处理加、减、乘、除法四则运算。四则运算计算器程序设计 界面设置 选择算法设置 十进制转换设置.3.2 系统流程图 图 3.2.1 四则运算计算器执行过程流程图 4 系统详细设计 4.1
5、界面设置 通过定义数据段,利用 09H 显示出功能列表。通过定义数据段,以字符串的形式输入每个提示信息,利用 09H 键盘输入并回显命令显示每一个功能提示,是计算器的功能列表有序清晰的显示在屏幕上。4.2 选择算法设置 首先选择要进展的四则运算,假设选择 1,则进展加法;假设选择 2,则进展减法;假设选择 3,则进展乘法;假设选择 4,则进展除法。加法:先输入第一个小于 4 位十六进制数存入 SI 中,在输入第二个小于 4 位十六进制数存入 B*中,然后显示 B*和SI中的容相加存在 B*中。减法:先输入第一个小于 4 位十六进制数输入选择键*=1*=2*=3*=4 十六进制加法 十六进制减法
6、 十六进制乘法 十六进制除法 提示出错!*=0是 是 是 否 是 否 否 否 否*=Y/y?否 是 是 开 始 结 束-.-.可修编-存入 SI 中,在输入第二个小于 4 位十六进制数存入 B*中,然后显示 B*和SI中的容相减存在 B*中,然后用 NEG 来求反,即为第一个数减去第二个数的差,显示B*的容即为差。乘法:先输入第一个小于 4 位十六进制数存入 SI 中,在输入第二个小于 4 位十六进制数存入 B*中,把 B*的值给 A*,然后让 A*乘以SI,然后再分别将 D*,A*中的容赋给 B*,接着依次显示 D*,A*的容,即为积。除法:先输入第一个小于 4 位十六进制数存入 SI 中,
7、在输入第二个小于 4 位十六进制数存入 B*中,将SI赋给 A*作被除数,让 B*作除数,得到的商存放在 A*中,余数放在 D*中,然后依次赋给 B*,将其依次显示即为商。4.3 十进制转换设置 要完成十进制转换成十六,一般采用除十六取余法来完成,其大致过程如下:将待转换的数除以 16 得到第一个商和余数,此第一个余数就是所求的十六进制数的各位,再用第一个商除以 16,得到第二个商和余数,此第二个余数就是所求十六进制数的十位,重复这一过程直至商为 0,此时的余数就是所求十六进制数的最高位。在存中分配一缓冲区,用来存放以上别离出来的使十进制数的每一位,然后再逐个转换成 ASCII 码,转换成 A
8、SCII 码的过程很简单,就是给每个十六进制位加上30H 即可,最后送显示器输出。5 测试 5.1 测试方案 对程序源代码进展功能调试和功能验证。程序代码运行成功后,分别检验测试其加、减、乘、除功能,并对结果进展分析。当用户选择 0 时,输入 Y 或 N 决定是否退出程序。5.2 测试结果 输入数字进展加减乘除运算,计算结果如下列图所示:图 5.2.1 计算结果 测试完毕后,退出程序,如下列图所示:图 5.2.2 退出程序 6 小结 程序的主要功能是实现四则运算,整个程序中主要分为,输入算式,加法,减法,乘法,除法和以十进制显示结果这几个局部。本程序根本实现了四则运算的功能,但还没能实现带有括
9、号的四则运算,还有在除法运算中不能运算较大的数,会产生溢出现象。一开场的时候自己编出来的程序有很多问题,尤其是在循环程序上,因此查阅了不少资料,也请教了好几个同学帮着修改,调试了好久才能正常运行。由于能力有限,程序还是有不完美的地方。这次的综合实验让我对汇编有了更深刻的认识,对各种指令有了进一步的理解。.参考文献 1其明.汇编语言程序设计教程.:中国矿业大学,2010.11-.-.可修编-附 录 附录 源程序清单 IN16 MACRO ;完成从键盘承受二个数并转换为十六制数,第一个数由 SI 指向,第二个数存放在 B*中 LEA D*,PR ;D*指向 PR 换行 CALL OUTPUT ;L
10、EA D*,INPUT1 ;D*指向 INPUT1,提示输入第一个数 CALL OUTPUT CALL INPUT ;把输入的数存放在 B*中 LEA SI,RESULT ;SI 指向 RESULT MOV SI,B*;把第一个十六制数存入 RESULT 的第一个位置 LEA D*,PR ;D*指向 PR,换行 CALL OUTPUT LEA D*,INPUT2 ;D*指向 INPUT2,提示输入第一个数 CALL OUTPUT CALL INPUT ;把输入的数存放在 B*中 ENDM ;宏完毕 DATA SEGMENT ;数据段 BUF DB ,0DH,0AH DB*-WELE TO CA
11、LCULATOR SYSTEM-*,0DH,0AH DB*-1:ADD-2:SUB-3:MUL-4:DIV-0:QUIT-*,0DH,0AH DB*-2011*6*21-*,0DH,0AH DB 0DH,0AH,Please input the choose number:,$INPUT1 DB Please input the first number*iao yu 4 wei:,$INPUT2 DB Please input the second number*iao yu 4 wei:,$RESULT DW,;存放键盘输入的两个十六制数 WRO DB You input the numb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课程设计 报告 实现 加减乘除 四则运算 计算器 11104
限制150内