汇编语言程序设计报告
《汇编语言》课《汇编语言》课程程 设设 计计 报报 告告 专专业业计算机科学与技术 学学 生生 姓姓 名名张竹青 班班级级Z计算机151 学学号号 任任 课课 老老 师师王志宏 完完 成成 日日 期期2017年12月29日 实现加减乘除四则运算的计算器 目录 1 概述 1 1.1 设计目的 1 1.2 设计内容 1 2 系统需求分析 . 1 2.1 系统目标 1 2.2 主体功能 1 2.3 开发环境 2 3 系统概要设计 . 2 3.1 系统的功能模块划分 2 3.2 系统流程图 3 4 系统详细设计. 4 4.1 界面设置. 4 4.2 选择算法设置. 4 4.3 十进制转换设置. 4 5 测试. 5 5.1 测试方案 5 5.2 测试结果 5 6 小结. 6 参考文献 . 7 实现加减乘除四则运算的计算器 实现加减乘除四则运算的计算器实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 使用汇编语言,通过实现简单计算器的一般功能,如加、减、乘、除的计算来 了解并掌握 DOS 系统功能的调试方法,学会画出编程的具体流程图,同时在程序设 计过程中熟悉各种指令的应用和意义, 以及如何进行上机编辑、汇编、 连接和调试。 本课程设计也是对课堂上所学的基本理论知识和程序设计方法的巩固和深化, 提高我们的编程思想、分析问题和解决问题的综合应用能力,能够编写较复杂的应 用程序,最终达到熟练地掌握结构化程序设计技术和编写汇编源程序的基本方法的 目的。 1.2 设计内容 设计一个能实现加、减、乘、除计算的程序,要求该程序接受从键盘输入的十 六进制数,当程序执行时需在文件名后直接跟上计算表达式,每当读到一个有效的 表达式时对表达式进行相应的运算后,输出用十进制数或十六进制数表示的运算结 果,如在命令提示符下执行结果如下: c:\tasmjs 3+2 5 2 系统需求分析 2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单的加减乘除四则运算的 计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则 运算。具体功能如下: (1)调用中断把要做运算的两个数输入到屏幕上并用程序将他们存储起来 (2)判断用户所输入的运算是四则运算中的哪一种运算 (3)判断运算过程中是进位还是借位 (4)选择用何种输出方式 (5)实现清屏 2.2 主体功能 要求该程序接受的是十六进制数,执行相应的计算后,计算结果以十六进制数 或十进制数输出。本设计的使用说明如下: (1)按照提示选择数字 1,2,3,4 (2)1:ADD加法 (3)2:SUB减法 (4)3:MUL乘法 1 实现加减乘除四则运算的计算器 (5)4:DIV除法 (6)输入一个小于四位的数字,回车 (7)再输入一个小于四位的数字,回车 (8)显示结果 (9)退出按 0,选择 Y 或 N 2.3 开发环境 TASM5.0集成环境 3 系统概要设计 3.1 系统的功能模块划分 本设计实现的模块图如图 3-1 所示 四则运算计算器程序设计 界 面 设 置 选 择 算 法 设 置 十 进 制 转 换 设 置 (1) 界面设置 主要实现确定界面样式的功能,以菜单形式显示。 (2) 选择算法设置 用于选择加、减、乘、除法来进行运算。 (3) 十进制转换设置 应用十进制的转换算法来处理加、减、乘、除法四则运算。 图 3-1 概要模块 2 实现加减乘除四则运算的计算器 3.2 系统流程图 开始 输入选择键 X X=1? 是 十六进制加法 否 是 X=2? 十六进制减法 否 是 X=3? 十六进制乘法 否 是 X=4? 十六进制除法 否 否是 X=0? Exit? Y 退出程序 N 结束 图 3-2 四则运算计算器执行过程流程图 3 实现加减乘除四则运算的计算器 4 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 即可,最后送显示器输出。 4 实现加减乘除四则运算的计算器 5 测试 5.1 测试方案 对程序源代码进行功能调试和功能验证。程序代码运行成功后,分别检验测试 其加、减、乘、除功能,并对结果进行分析。当用户选择0 时,输入 Y 或 N 决定是 否退出程序。 5.2 测试结果 正确输出:加、减、乘、除的运算结果分别如图5-1、图5-2、图 5-3、图5-4 所示 图 5-1 加法的运算的结果截图 图 5-2 减法的运算的结果截图 5 实现加减乘除四则运算的计算器 图 5-3 乘法的运算的结果截图 图 5-4 除法的运算的结果截图 测试结束后,退出程序,如图 5-5 所示: 图 5-5退出程序 6 小结 本次课程设计是运用汇编语言设计一个计算器,其主要功能是实现加减乘除四 则基本运算,整个程序中主要分为:输入表达式,加法,减法,乘法,除法和以十 六进制输出结果这几个部分。本程序基本实现了四则运算的功能,但是只能单独进 行某一种运算,没有实现混合运算的效果,由于程序会产生溢出现象,所以在除法 运算中不能运算较大的数。在编写过程中用到了很多基础知识,但是在程序运行时 总会出现一些问题,由于汇编基础比较薄弱,所以有时会打错了程序代码,误解了