当前位置:首页 >> 其它课程 >> 汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告——实现加减乘除四则运算的计算器


汇编语言课程设计报告
( 2011 -- 2012 年度第 2 学期)

实现加减乘除四则运算的计算器





计算机科学与技术

学生姓名 班 学 级 号

指导教师 完成日期

实现加减乘除四则运算的计算器
<

br />目



目 录 ...................................................................................................................... 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 小结......................................................................................................................... 5 参考文献 .................................................................................................................... 6 附 录 ...................................................................................................................... 7 附录 源程序清单....................................................................................................... 7

汇编语言设计课程设计

实现加减乘除四则运算的计算器
1 概 述

1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上, 旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法, 提高分析问题、解决问题的综合应用能力。 1.2 设计内容 能实现加、减、乘、除的计算;该程序接受的是 16 进制数;执行时,需要在 文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5

2 系统需求分析
2.1 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计 算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运 算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减 法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知 的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个 数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为 此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中 的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问 题。 2.2 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个 软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入 2 个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 2.3 开发环境
TASM5.0 集成环境

1

实现加减乘除四则运算的计算器

3 系统概要设计
3.1 系统的功能模块划分 本题目实现的模块图如图 3-1 所示
四则运算计算器程序设计

界 面 设 置

选 择 算 法 设 置

十 进 制 转 换 设 置

图 3-1 概要模块

(1) 界面设置 主要实现确定界面样式的功能,以菜单形式显示。 (2) 选择算法设置 用于选择加、减、乘、除法来进行运算。 (3) 十进制转换设置 应用十进制的转换算法来处理加、减、乘、除法四则运算。

2

汇编语言设计课程设计

3.2 系统流程图

开 始

输入选择键 x 是 X=1? 否 X=2? 否 X=3? 否 X=4? 否 是 是 十六进制除法 是 十六进制乘法 是 十六进制减法 十六进制加法

X=0? ?? 否 X=Y/y ? ??

提示出错! 否



结 束

图 3.2.1 四则运算计算器执行过程流程图

4 系统详细设计
4.1 界面设置 通过定义数据段,利用 09H 显示出功能列表。通过定义数据段,以字符串的形 式输入每个提示信息,利用 09H 键盘输入并回显命令显示每一个功能提示,是计算 器的功能列表有序清晰的显示在屏幕上。 4.2 选择算法设置 首先选择要进行的四则运算,若选择 1,则进行加法;若选择 2,则进行减法; 若选择 3,则进行乘法;若选择 4,则进行除法。加法:先输入第一个小于 4 位十 六进制数存入 SI 中, 在输入第二个小于 4 位十六进制数存入 BX 中, 然后显示 BX 和
3

实现加减乘除四则运算的计算器

[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 测试方案 对程序源代码进行功能调试和功能验证。程序代码运行成功后,分别检验测试 其加、减、乘、除功能,并对结果进行分析。当用户选择 0 时,输入 Y 或 N 决定是 否退出程序。 5.2 测试结果 输入数字进行加减乘除运算,计算结果如下图所示:

图 5.2.1 计算结果
4

汇编语言设计课程设计

测试结束后,退出程序,如下图所示:

图 5.2.2 退出程序

6 小结
程序的主要功能是实现四则运算,整个程序中主要分为,输入算式,加法,减 法,乘法,除法和以十进制显示结果这几个部分。本程序基本实现了四则运算的功 能,但还没能实现带有括号的四则运算,还有在除法运算中不能运算较大的数,会 产生溢出现象。 一开始的时候自己编出来的程序有很多问题, 尤其是在循环程序上, 因此查阅了不少资料,也请教了好几个同学帮着修改,调试了好久才能正常运行。 由于能力有限,程序还是有不完美的地方。这次的综合实验让我对汇编有了更深刻 的认识,对各种指令有了进一步的理解。

5

实现加减乘除四则运算的计算器

参考文献
[1]刘其明.汇编语言程序设计教程. 徐州:中国矿业大学出版社, 2010.11

6

汇编语言设计课程设计


附录 源程序清单
IN16 MACRO



;完成从键盘接受二个数并转换为十六制数,第一个数由 SI 指向,第二 个数存放在 BX 中

LEA DX,PR CALL OUTPUT LEA DX,INPUT1 CALL OUTPUT CALL INPUT LEA SI,RESULT MOV [SI],BX LEA DX,PR CALL OUTPUT LEA DX,INPUT2 CALL OUTPUT CALL INPUT ENDM DATA SEGMENT BUF DB ' ',0DH,0AH ;

;DX 指向 PR 换行

;DX 指向 INPUT1,提示输入第一个数

;把输入的数存放在 BX 中 ;SI 指向 RESULT ;把第一个十六制数存入 RESULT 的第一个位置 ;DX 指向 PR,换行

;DX 指向 INPUT2,提示输入第一个数

;把输入的数存放在 BX 中 ;宏结束 ;数据段

DB '*------- WELCOME TO CALCULATOR 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 xiao yu 4 wei:','$' INPUT2 DB 'Please input the second number xiao yu 4 wei:','$' RESULT DW ?,? ;存放键盘输入的两个十六制数

WRO DB 'You input the number is wrong,please input again:',0DH,0AH,'$'; PR DB 0DH,0AH,'$' ;将光标移到下一行起始位置

PR1 DB 'A + B=$' PR2 DB 'A - B=$' PR3 DB 'A * B=$' PR4 DB 'A / B=$'
7

实现加减乘除四则运算的计算器

PR5 DB '......$' PR6 DB 'Are you sure exit?(Y/N)$' DATA ENDS CODE SEGMENT MAIN PROC FAR ;主函数 ;数据段落定义结束

ASSUME CS:CODE ,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,BUF CALL OUTPUT SUB AX,AX CALL CHOOSE JMP START RET MAIN ENDP INPUT PROC NEAR MOV BX,0 NEWCHAR: MOV AH,1 INT 21H CMP AL,0DH JE EXIT ;接受键盘输入一个字符 ;输入的字符与回车比较 ;是回车就结束 ;与 A 比较 ;大于等于就跳转到 H0 ;与 0 比较 ;大于等于就跳转到 H1 ;由于 41-A=37,完成把字母字符转换成对应的十六进制数 ;跳转到 ADDTO ;把 0 到 9 的字符转换成对应的十六进制数 ;跳转到 ADDTO ;定义 INPUT 函数,就是将从键盘输入的数按原十六进制数存放在 BX 中 ;BX 清零 ;DX 指向 BUF 换行 ;调用显示字符串函数换行 ;AX 清零 ;调用选择函数 ;跳转到 START

CMP AL,'A' JAE H0 CMP AL,'0' JAE H1 H0:SUB AL,37H JMP ADDTO H1:SUB AL,30H JMP ADDTO ADDTO: MOV CL,4 SHL BX,CL

;相当于让 BX 乘以 16 ;将 BX 逻辑左移

8

汇编语言设计课程设计

MOV AH,0 ADD BX,AX JMP NEWCHAR EXIT: RET INPUT ENDP OUTPUT PROC NEAR MOV AH,09H INT 21H RET OUTPUT ENDP CHOOSE PROC NEAR MOV AH,1 INT 21H CMP AL,'1' JE YES1

;将 AX 清零 ;AX+BX 送到 BX ;跳转到 NEWCHAR,把第二个输入的字符存放到 BX 的第二位

;显示字符串函数

;选择函数 ;从键盘接受一个数

;与 1 比较 ;等于 1 就跳转到 YES1,进行加法 ;与 1 比较 ;等于 2 就跳转到 YES2,进行减法 ;与 1 比较 ;等于 3 就跳转到 YES2,进行乘法 ;与 1 比较 ;等于 4 就跳转到 YES2,进行除法 ;与 0 比较 ;等于 4 就跳转到 EXIT1,结束程序 ;如果不是 0 到 4 之间的数就提示出错 ;DX 指向 PR 换行

CMP AL,'2' JE YES2

CMP AL,'3' JE YES3 CMP AL,'4' JE YES4 CMP AL,'0' JE EXIT1 CALL WRONG EXIT1: LEA DX,PR CALL OUTPUT LEA DX,PR6 CALL OUTPUT MOV AH,1 INT 21H CMP AL,'Y' JE EXIT0 CMP AL,'y' JNE START

;DX 指向 PR6,确认是否退出

;从键盘接受一个数

;与 Y 比较 ;不是 Y 就看是否为 y ;与 y 比较 ;不是 y 就跳转到 START

9

实现加减乘除四则运算的计算器

EXIT0:MOV AH,4CH INT 21H YES1:CALL JIA JMP START YES2:CALL JIAN JMP START

;结束本程序

;调用 JIA 函数 ;调用完之后跳转到 START ;调用 JIAN 函数 ;调用完之后跳转到 START ;调用 CHENG 函数 ;调用完之后跳转到 START ;调用 CHU 函数

YES3:CALL CHENG JMP START YES4:CALL CHU RET CHOOSE ENDP WRONG PROC NEAR LEA DX,PR LEA DX,WRO JMP START RET WRONG ENDP JIA PROC NEAR IN16

;选择函数结束 ;报错函数 ;DX 指向 PR 换行 ;DX 指向 WRO,提示输入有错,请重新输入 ;跳转到 START

;报错函数结束 ;加法函数 ;调用宏,接受键盘输入的两个十六进制数, 第一个数由 SI 指向, 第二个 数存放在 BX 中

ADD LEA

BX,[SI] DX,PR

;把第一个数加第二个数存放到 BX 中 ;DX 指向 PR,换行

CALL OUTPUT LEA DX,PR1 ;DX 指向 PR1,显示‘A + B=’

CALL OUTPUT CALL OUTBX RET JIA ENDP JIAN PROC NEAR IN16 ;加法结束 ;减法函数 ;调用宏,接受键盘输入的两个十六进制数, 第一个数由 SI 指向, 第二个 数存放在 BX 中 SUB BX,[SI] NEG BX LEA DX,PR ;第二个数减第一个数,结果存放到 BX 中 ;对结果取反后才是 A-B 的值,才是第一个数减去第二个数 ;DX 指向 PR,换行 ;调用显示 BX 寄存器的内容函数

10

汇编语言设计课程设计

CALL OUTPUT LEA DX,PR2 CALL OUTPUT CALL OUTBX RET JIAN ENDP CHENG PROC NEAR IN16 ;加法函数结束 ;乘法函数 ;调用宏,接受键盘输入的两个十六进制数, 第一个数由 SI 指向, 第二个 数存放在 BX 中 MOV DX,0 MOV AX,BX MUL WORD PTR[SI] MOV BX,AX PUSH BX PUSH DX LEA DX,PR CALL OUTPUT LEA DX,PR3 CALL OUTPUT POP DX MOV BX,DX CALL OUTBX POP BX CALL OUTBX RET CHENG ENDP CHU PROC NEAR IN16 ;乘法函数结束 ;除法函数 ;调用宏,接受键盘输入的两个十六进制数, 第一个数 SI 指向, 第二个数 存放在 BX 中 MOV AX,[SI] MOV DX,0 DIV BX PUSH DX PUSH AX ;将第一个数赋给 AX ;将 DX 清零 ;AX 除 BX,结果存放到 DX,AX,DX 存放余数,AX 存放商 ;压栈 DX ;压栈 AX ;将 DX 出栈,要将做乘法后 DX 的内容显示出来 ;把 DX 给 BX ;显示 DX 的内容 ;将 BX 出栈 ;显示 AX 的内容 ;DX 指向 PR3,显示‘A * B=’ ;把 DX 清零 ;把第二个数赋给 AX ;AX 乘[SI]并把结果存放到 DX,AX 中,是字的操作 ;将 AX 赋给 BX ;将 BX 压栈,显示下面 DX 的内容时要将 DX 的值赋给 BX ;将 DX 压栈,因为下面要换行输出,会改变 DX 的值 ;DX 指向 PR,换行输出 ;调用显示 BX 寄存器的内容 ;DX 指向 PR2,显示‘A - B=’

11

实现加减乘除四则运算的计算器

LEA DX,PR CALL OUTPUT LEA DX,PR4 CALL OUTPUT POP AX MOV BX,AX CALL OUTBX LEA DX,PR5 CALL OUTPUT POP DX MOV BX,DX CALL OUTBX RET CHU ENDP OUTBX PROC NEAR MOV CH,4 ROTATE:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7H PRINTIT:MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RET OUTBX ENDP CODE ENDS END MAIN

;DX 指向 PR,换行

;DX 指向 PR4,显示‘A / B=’

;出栈 AX ;将 AX 赋给 BX,将商给 BX ;显示 AX 寄存器的内容,即显示商 ;DX 指向 PR5,显示省略号

;出栈 DX ;将 DX 赋给 BX,即将余数赋给 BX, ;显示 DX 寄存器的内容,显示余数

;除法函数结束 ;显示 BX 寄存器的内容函数 ;CH 等于 4 ;CL 等于 4 ;将 BX 循环左移 4 位 ;将 BL 赋给 AL ;将 AL 的高位置 0 ;AL+30H 可将 AL 变为对应的 ASCII 的值 ;判断是否是 0-9 之间 ;是则跳转到 PRINTIT ;是 A-F 再加上 7H ;将 AL 赋给 DL

;显示 AL ;CH-1 再赋给 CH ;CH!=0 则跳转到 ROTATE ;CH=0 则结束 ;显示寄存器 BX 内容函数结束

12


更多相关文档:

汇编语言课程设计报告——实现加减乘除四则运算的计算器

7 汇编语言设计课程设计 实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上, 旨在深化...

汇编语言课程设计报告——实现加减乘除四则运算的计算器

7 作者:陈国富 汇编语言设计课程设计 实现加减乘除四则运算的计算器 1 概述 1.1 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,...

汇编语言课程设计四则运算计算器

微机原理实验报告 汇编语言课程设计报告 ( 2012 -- 2013 年度第 1 学期) 实验名称: 实现加减乘除四则运算的计算器 专 业 生物医学工程 周炳威 B100904 B...

汇编语言课程设计四则运算计算器

8 汇编语言课程设计 实现加减乘除四则运算的计算器 1 设计目的本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上, 旨在深化学生学习的汇编语言...

汇编计算器课程设计报告

2、概要设计用 8086 汇编语言编写一个能实现四则混合运算、 带括号功能的整数...该模块为计算器的核心部分,其中包括运算级的优先级转换和基本的加减乘除函 数的...

汇编语言课程设计 四则运算

设计目标:通过对具有加减乘除基本功能的计算器设计实现,学会使用汇编语言实现输入输出模块的设计,模块合理调用的设计,加减乘除运算的判断以 及退出程序的判断的设计...

汇编语言课程设计——计算器

汇编语言实训 课程设计 题 目:___ 计算器 专业班级:_2013 级软件工程(1)班...1.1 系统分析该课程的设计任务是做一个简易计算器,可以实现加减乘除四则运算。...

简易计算器的汇编语言程序设计报告

简易计算器汇编语言程序设计报告_工学_高等教育_教育专区。汇编语言课程设计广东...程序功能设计论证该课程设计的任务是做一个简易计算器,可以实现加减乘除四则运算...

汇编课程设计报告-四则运算

课程设计的性质和目的 性质: 《汇编语言》是计算机...将 BX 中的计算结果以十进制输出 MOV AL,AH MOV...本程序基本实现四则运算的功能,但还没能实现带有...

汇编语言课程设计四则运算

汇编语言课程设计四则运算_工学_高等教育_教育专区。今日推荐 78份文档 不小心又胖了 胖女人必看 健康减肥10种吃不胖的食物 吃哪些食物不发胖 在家全套瑜伽练习教...
更多相关标签:
加减乘除四则运算 | 加减乘除四则运算题 | 加减乘除四则运算法则 | java计算器加减乘除 | vb编写加减乘除计算器 | 计算器连续加减乘除 | c语言加减乘除计算器 | vb计算器加减乘除代码 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com