资源描述:
《汇编语言计算器课程设计报告书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、可编辑版1.设计目标运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,能够在DOS界面下进行简单的加、减、乘、除的简单计算。程序应有操作提示、输入和输出。自动闪烁光标,并提示输入信息。输入正确的数值等符号后可以进行正确的运算,程序计算其结果值并输出。程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为+、-、*、/,最后结果以十进制数表示。且程序主界面需为一个由‘*’组成边框的矩形窗口。汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:能够直接
2、访问与硬件相关的存储器或I/O端口;能够不受编译器的限制,对生成的二进制代码进行完全的控制;能够对关键代码进行更准确的控制;能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度地发挥硬件的功能。2.软件设计2.1程序设计的基本思想主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。计算显示完毕后,按提示选择是否要继续计算,不选择继续则结束。对屏幕上输入字符串的接受,为INPUT语句段,见源
3、代码,主要是将数字和运算符分开存放。MATCH子程序,子程序内有三次跳转,将运算符选择正确的语句进行计算。由于操作符只有+、-、*、/,没有涉及到括号,不用考虑括号的匹配问题。流程图如下:图1主模块流程图Word完美格式可编辑版子模块:完成对数据的进一步加工处理,转换格式并得出结果。首先根据输入调用对应的“+”、“-”、“*”、“/”四个函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几个模块服务的,大致的流程图如下图2:图2子模块流程图2.2代码STACKSEGMENTSTACKDB200DUP(0)S
4、TACKENDSDATASEGMENTOPSDB?OPDDB?OPERDB?TITDB'***********************************',0DH,0AHDB'*MadeBy*',0DH,0AH;0DH代表回车DB'*TongXinJiSuanQiXiaoZu*',0DH,0AH;0AH代表换行DB'*ChangqianZuoxinWangxin*',0DH,0AHDB'*WangdayongTangkuanlong*',0DH,0AHDB'*+-*/*',0DH,0AHDB'*Y,y:cont
5、inueN,n:quit*',0DH,0AHDB'*************Calculate*************$',0DH,0AHTip1DB'Inputthefirstoperator(0---9):$',0DH,0AHTip2DB'Pleaseinputtheoper(+,-,*,/):$',0DH,0AHErrorDB'Error!Pleseinputtheoperagain:$',0DH,0AHTip3DB'Inputthesecondoperator(0---9):$',0DH,0AHResult
6、DB'--------------->theresultis:$',0DH,0AHQuitDB'Chooserepeatorquit?(Y/y/N/n):$',0DH,0AHTsaveDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA;初始化DS:DXMOVDS,AXWord完美格式可编辑版Remain:MOVBL,0;Oper(恢复)初始状态MOVOPS,BLMOVOPER,BLMOVOPD,BLLEASI,OPS;OPS的偏移地
7、址送给SILEADI,OPD;OPD的偏移地址送给DICALLEnterLEADX,TITMOVAH,9INT21HCALLInput1;调用输入第一个操作数CALLOperat;调用输入操作符CALLInput2;调用输入第二个操作数CALLCalculate;调用计算方法CALLStrQuit;调用判断程序再次执行MOVAH,1INT21HCMPAL,'Y'JERemainCMPAL,'y';选择Y返回Remain继续执行JERemainCMPAL,'N'JEEXITCMPAL,'n'JEEXITEXIT:MOV
8、AH,4CH;若不是Y则结束INT21H;输入操作数子程序---------------------------------------------------------Input1PROCNEARCALLEnterLEADX,Tip1;输入第一个操作数提示----------MOVAH,9INT21H;十进制输入提示BCDin1:MOVAH