简易计算器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1.设计目的………………………………………………………………2.总体设计………………………………………………………………
2.1 系统总体分析…………………………………………………………………
2.2 主模块框图及说明……………………………………………………………3.详细设计………………………………………………………………
3.1 主模块及子模块说明…………………………………………………………
3.2 各模块详细设计………………………………………………………………4.程序调试………………………………………………………………
4.1 运行界面分析…………………………………………………………………
4.2 算法的分析……………………………………………………………………
4.3 调试过程及分析………………………………………………………………5.设计总结………………………………………………………………
5.1 设计体会………………………………………………………………………
5.2 系统改进………………………………………………………………………. 6.参考文献………………………………………………………………. 7.致谢…………………………………………………………………….
摘要
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。本次设计的简单计算器支持简单的四则运算。
关键词:汇编语言,简单计算器,高效,硬件
1.设计目的
通过本次的课程设计,使自己加深对汇编语言的了解,应用《汇编语言程序设计》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能里的目的。
通过本次课程设计的训练,可以使我在基本思路和基本方法上对基于8086/8088和基于ARM核的汇编语言程序设计有一个比较感性的认识,并具备一定程度的设计能力,从而能够熟练掌握编写汇编语言源程序的基本方法和基本构架,学会编写顺序结构、分支结构、循环结构和子程序的汇编程序,掌握程序中数据的产生与输入输出的方法以及一些关于汇编语言更深层次方面有初步的认识。
2.总体设计
2.1 系统总体分析
该课程设计的任务是做一个简易计算器,可以对两个二位数进行加减乘除运算,例如11+23=34。我们平常的学习中做过给出两个数进行加减法运算的题目,但是这个题目难点在于这两个要做运算的数未知,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个二位数进行运算,而且做的是加法运算还是减法运算也未知,所以我们还要判断这个运算为加法运算还是减法运算。另外运算过程中的进位借位,选择什么方式进行输出,如何实现清屏等也是要解决的问题。
2.2 主模块框图及说明
本程序的功能结构图如图2-1:
图 2-1功能结构图
程序流程图如图2-2:
图2-2流程图
3.详细设计
3.1 主模块及子模块说明
主模块:主要完成程序的主体框架结构,提供人-程序的交互。
子模块:主要完成对数据的加工,处理。
3.2 各模块详细设计
主模块:
首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。整个过程按“ESC”结束。流程图如下图3-1:
图3-1 主模块流程图
子模块:
完成对数据的进一步加工处理,转换格式并得出结果。首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:
图3-2 子模块流程图
代码如下:
CURS MACRO A,B
MOV AH,2 ;置光标位置
MOV BH,0 ;页号为0
MOV DH,A ;设置光标的坐标为(A.B)
MOV DL,B
INT 10H ;BIOS调用
ENDM
;-------------------------------
DISPMSG MACRO MESSAGE
LEA DX,MESSAGE ;传递MESSAGE的偏移地址
MOV AH,9 ;显示字符串
INT 21H ;DOS调用
ENDM
;----------------------------------
CLEAR MACRO COLOR ;清屏
MOV AH,6 ;屏幕初始化
MOV AL,0 ;页号
MOV CH,0 ;设置左上角的坐标为(0,0)
MOV CL,0
MOV DL,100 ;设置右上角的坐标为(100,100)MOV DH,100
MOV BH,COLOR ;卷入行属性
INT 10H ;BIOS调用
ENDM
.MODEL SMALL
.STACK
.DATA ;数据段定义
MSG0 DB '* * * * * * * * * * * * * * * * * * * *',0DH,0AH ;,0dh,0ah,0dh,0ah DB ' * *',0DH,0AH
;db '* *',0dh,0ah
;db '* *',0dh,0ah
DB ' * --------COUNTER-------- *',0DH,0AH ;,0dh,0ah,0dh,0ah
DB ' * *',0DH,0AH
DB ' * *',0DH,0AH
DB ' * *',0DH,0AH
DB ' * DATA1:'
DB '_______________ *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh
DB ' * *',0DH,0AH
DB ' * *',0DH,0AH
DB ' * *',0DH
DB ' * DATA2:'
DB '_______________ *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh
DB ' * *',0DH,0AH
DB ' * *',0DH,0AH
DB ' * *',0DH
DB ' * RESULT:'
DB '_______________ *',0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh
DB ' * *',0DH,0AH
DB ' * *',0DH,0AH
DB ' * *',0DH,0AH