微机设计报告(四则运算器)

微机设计报告(四则运算器)

ID:33039276

大小:400.07 KB

页数:21页

时间:2019-02-19

微机设计报告(四则运算器)_第1页
微机设计报告(四则运算器)_第2页
微机设计报告(四则运算器)_第3页
微机设计报告(四则运算器)_第4页
微机设计报告(四则运算器)_第5页
资源描述:

《微机设计报告(四则运算器)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、学院:班级:姓名:学号:课程设计题目:四则运算计算器课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:H期:年月概述1一、设计要求1二、设计思想1三、程序工作原理2四、程序流程图及说明3五、程序源代码7六、程序运行示例18七、设计过程屮遇到的问题及解决方法18八、设计心得19九、参考文献19四则运算计算器概述此计算器,可以实现从键盘输入一个十进制的四则运算表达式,如:-3+4*(5-6)-8/2,编程计算表达式的值,输出十进制结果。表达式和结果可以是三位或四位十进制,也可以是带负数的十进制数,并且+—*/()位置任意摆放(只要符合数学上的运算逻辑)。一、设计要求用汇编

2、语言设讣一个程序,用来实现计算器的四则运算功能。需要实现在屏幕要显示输入的表达式,以及运算结果。例如:-3+4*(5-6)-8/2汁算表达式的结果,并将该表达式及结果显示出来;设计要求如下:(1)由键盘作为输入部分。(1)能进行四则混合运算,并且能计-算带括号和负数的数学表达式。(2)按ESC键则退出计算器菜单界面并返回dos系统,否则继续输入表达式,求得对应的结果。二、设计思想根据题目的要求,可以把整个源程序大致划分六大步骤。(1)首先键盘输入合法中缀算术表达式,并将其存储到S1中。(2)然后调用子程序CHANGE将中缀式转化为后缀式。(3)调用子程序CALCULATE对后缀表达式

3、进行有符号数的运算,并将最终结果存放在栈中。(4)POPAX,AX->STORAGE,即用STORAGE存放最终运算结果。(5)调用子程序OUTPUT将运算结果输出。(6)通过用键盘输入ESC退岀DOS程序。三、程序工作原理步骤一的原理:此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1屮,然后在判断此字符是否为回车,如果不是,则循环,继续输入字符,否则,程序往下执行。步骤二的原理:此处最核心的就是川缀表达式转化为后缀表达式的算法。具体思路为:用一个栈来存储与运算符号.先将字符'@'压入栈小,并假设其优先级为0•然后遍历S1中的字符,遇到数字直接存入S2中并且输完数

4、字后向S2中输入一空格以备计算结果时用。遇到运算符则先判断其与栈顶运算符的优先级谁大。如果S1中运算符号优先级大,则此运算符号直接入栈;否则栈顶符号先出栈到S2,待栈顶符号优先级小于S1小符号时,S1中元素入栈。步骤三的原理:遍历S2中的字符,遇到空格,则将前面数字字符串转换成的数据压入栈中。遇到加号,从栈屮弹出两个数据进行加法运算,并将运算结果压入栈屮。遇到减号,从栈屮弹出两个数据进行减法运算,并将运算结果压入栈屮。遇到乘号,从栈屮弹出两个数据进行乘法运算,并将运算结果压入栈屮。遇到除号,从栈屮弹出两个数据进行除法运算,并将运算结果压入栈屮。整个字符串遍历完后,最终计算结果就保存在

5、栈屮。步骤四的原理:将栈屮保存的最后运算结果弹出,并保存到STORAGE屮。步骤五的原理:先判断运算结果是否为负数,如果是,将'存入数组N中,并对运算结果求补。然后判断数据所在范围,小于32767大于一万则将运算结杲除以一万,并将商赋给数组N;然后将余数除以一千将商赋给数组N;再将余数除以一百并将商赋给数组N;再将余数除以十并将商赋给数组N;最终将余数赋给数组N。如杲数据更小,也是如此实现,只是步骤更少些。步骤六的原理:通过RETOUTPUT语句跳转到CALLOUTPUT语句的下一条指令,执行NEXT1模块(判断键盘输入是否为ESC),若为ESC的话跳转到EXIT模块从而退出程序。四

6、、程序流程图及说明程序总流程图:结束中缀表达式转化为后缀表达式的流程图:其每次向S2中输入一个字符,DI就会加1。当压入'(‘后,再压入0作为运算符优先级的判断;当压入'+'或后,再压入01作为运算符优先级的判断;当压入或'/'后,再压入02作为运算符优先级的判断。计算后缀表达式数值的流程图:串数字字符转当遇到数字字符时,将其转为柑应的数值•若具后字符的ASCII值不小于,则前面数值乘10再加匕这个字符对应的数值,直到遇到空格为止化为相应的数值并将垠终结黑压入栈中栈中弹出两个数据进行加运算,并将跟终结果压入栈中YVv栈中弹出两个数据进行减运算,并将跟终结果压入栈中栈中弹出两个数据进行

7、祜n,并将试终结果压入栈中栈中艸出两个数据进行除运算,并将最终结果压入栈中输出运算结果程序的流程图:0->SI;STORAGE->AX;0->DXAX=10000AX<0NEGAX;'・'->N[SI]AX>10000DX、AX除以10000;AX->N[SI];DX->AX五、程序源代码DATASEGMENT51DB60DUP(?);$,52DB60DUP(?);$,NDB10DUP⑺,$STORAGEDW?,$BUFODBOdh,Oah;存储输入的屮缀

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。