简单计算器程序设计

合集下载

c简单计算器课程设计

c简单计算器课程设计

c 简单计算器课程设计一、课程目标知识目标:1. 让学生掌握简单计算器的基本操作,包括开机、关机、清除屏幕、输入数字和运算符号。

2. 使学生理解加、减、乘、除四则运算的基本概念,并能够在简单计算器上进行正确的运算操作。

3. 帮助学生识别计算器上各个按键的功能,了解其对应的数学意义。

技能目标:1. 培养学生运用简单计算器解决实际问题的能力,如购物找零、计算面积等。

2. 提高学生进行四则运算的速度和准确性,提高计算效率。

3. 引导学生掌握计算器使用技巧,如连续计算、顺序计算等。

情感态度价值观目标:1. 培养学生对计算器的正确态度,认识到计算器是学习数学的工具,而非替代品。

2. 激发学生学习数学的兴趣,让学生在轻松愉快的氛围中体验数学计算的乐趣。

3. 培养学生的合作意识,使学生在小组讨论和互助学习中提高沟通能力,培养团队精神。

本课程针对小学三年级学生设计,结合学生年龄特点,注重激发兴趣和培养动手操作能力。

课程内容紧密联系教材,将目标分解为具体的学习成果,便于后续教学设计和评估。

通过本课程的学习,学生将能够熟练运用简单计算器,提高数学计算能力,培养良好的学习习惯和团队协作能力。

二、教学内容1. 计算器的基本结构:引导学生认识计算器的外观、各部分名称及其功能。

- 教材章节:第三章第1节《认识计算器》- 内容列举:计算器按键布局、显示屏、开机与关机、清除键等。

2. 四则运算操作:讲解加、减、乘、除四则运算在计算器上的操作方法。

- 教材章节:第三章第2节《计算器的四则运算》- 内容列举:按键输入、运算顺序、连续运算、计算结果读取等。

3. 计算器使用技巧:教授计算器的高级使用技巧,提高计算效率。

- 教材章节:第三章第3节《计算器使用技巧》- 内容列举:百分比计算、乘方运算、记忆功能等。

4. 实践应用:结合实际生活场景,让学生运用计算器解决实际问题。

- 教材章节:第三章第4节《计算器在实际生活中的应用》- 内容列举:购物找零、计算面积、体积、速度等。

C语言程序设计-第四章简单计算器小程序-分支程序设计

C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2

逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】

C语言程序设计-简单的计算器

C语言程序设计-简单的计算器

- - . 《程序设计基础(C)》课程设计报告简易计算器设计学生姓名:学号:班级:指导老师:日期:309工作室设计目录一、设计目标2二、总体设计4三、详细设计6四、调试与测试12五、分析及结论13六、参考文献14【附录】16一、设计目标设计一个C语言程序(简单计算器设计)具体要求:在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。

主要功能:进行+、-、*、/、三角函数、对数、幂等各项数学运算,能够进行进制间的相互转换与计算。

二、总体设计1、程序设计组成框图2、设计思路简单计算器的设计的程序中主要调用的函数有:数学函数的定义和I/O函数;设计思路和理念在于一切追求简便易操作原理,通过个人的构思和设计以及调试运行设计出这一款简单的计算器。

3、程序设计流程图三、详细设计1、功能函数①函数的功能:两数的+、-、*、/计算、求平均函数的入口:从main()的if(flag==1)开关结构中进入,即flag的值为1时进入该函数,从而进行该功能函数的计算。

函数调用关系:被主函数调用,由if()开关结构中进入。

函数的出口:函数的出口为printf("是否继续运算?(Y/N) :"),此时输入“Y”,继续前面的结构。

2、功能函数②函数的功能: x的y次方的计算、两数的求余、以x为底y的对数函数的入口:从main()的if(flag==2)开关结构中进入,即flag的值为2时进入该函数,从而进行该功能函数的计算。

函数调用关系:被主函数调用,由if()开关结构中进入。

函数的出口:函数的出口为printf("是否继续运算?(Y/N) :"),此时输入“Y”,继续前面的结构。

3、功能函数③函数的功能: 单个数值sin、cos、tan的计算,以e为底的指数、求绝对值函数的入口:从main()的if(flag==3)开关结构中进入,即flag的值为3时进入该函数,从而进行该功能函数的计算。

简易计算器的设计

简易计算器的设计

学号:课程设计题目简易计算器的设计学院自动化专业电气工程及其自动化班级姓名指导教师2014 年1月9日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 简易计算器的设计初始条件:用8086CPU、8255A并行通信接口、七段LED数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)可进行2位十进制的加减乘除法运算。

(2)键盘输入数据,同时LED数码管显示,模拟计算器的工作。

(3)键盘上要求有0~9数字键,+、-、×、÷、=功能键,清除键C。

(4)撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:12月26日----- 12月 28 日查阅资料及方案设计12月29日----- 1 月 2 日编程1 月 3日----- 1 月 7日调试程序1 月 8日----- 1 月 9日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1设计的任务及要求 (2)2方案的设计 (3)2.1方案设计论证 (3)2.2方案概述与原理硬件电路图 (3)3系统模块与功能 (5)3.18086CPU芯片 (5)3.2 8255A 并行通信接口芯片 (5)3.3 译码电路 (6)3.4 小键盘电路 (6)3.5 四位七段 LED 数码管显示电路 (7)4软件设计框图与程序 (8)4.1计算器系统程序总体流程图 (8)4.2 模块程序流程图与程序 (8)4.2.1流程图 (8)4.2.2键盘扫描流程图 (9)4.3输入运算 (10)4.3.1输入运算的流程图 (10)4.3.2输入运算程序 (10)4.4显示部分 (11)4.4.1显示部分流程图 (11)4.4.2显示部分程序 (12)5系统仿真 (14)6小结与体会 (15)参考文献 (16)附录:设计源程序 (17)本科生课程设计成绩评定表摘要这次微机原理的课程设计的题目是简易计算器的设计,设计一个可以实现2位十进制加减乘除运算功能的电路,并用LED显示出来。

编写一个简单的计算器程序

编写一个简单的计算器程序

编写一个简单的计算器程序计算器程序是一种非常实用的工具,它可以帮助我们进行数学计算,并简化复杂的运算过程。

本文将介绍如何编写一个简单的计算器程序,实现基本的加减乘除运算。

首先,我们需要确定计算器程序的功能和界面设计。

在本文中,我们将使用Python编程语言来编写计算器程序,并使用命令行界面(CLI)进行交互。

这意味着我们将在终端窗口中输入表达式,并显示结果。

接下来,我们需要考虑计算器程序的基本运算功能。

一个简单的计算器需要实现四个基本的运算:加法、减法、乘法和除法。

我们将使用函数来实现每个运算功能。

以下是一个示例代码:```pythondef add(x, y):return x + ydef subtract(x, y):return x - ydef multiply(x, y):return x * ydef divide(x, y):return x / y```在这个示例代码中,我们定义了四个函数,每个函数接受两个参数,并返回计算结果。

接下来,我们需要处理输入表达式并调用相应的运算函数。

我们将使用一个循环来持续接收用户输入,并在用户输入“exit”时退出程序。

以下是一个示例代码:```pythonwhile True:expression = input("请输入一个表达式:")if expression == "exit":break#解析表达式,提取运算符和操作数operator = Nonefor op in ["+", "-", "*", "/"]:if op in expression:operator = opbreakif not operator:print("表达式错误,请重新输入!") continueoperands = expression.split(operator) x = float(operands[0])y = float(operands[1])if operator == "+":result = add(x, y)elif operator == "-":result = subtract(x, y)elif operator == "*":result = multiply(x, y)elif operator == "/":result = divide(x, y)print("运算结果:", result)print("谢谢使用,再见!")```在这个示例代码中,我们使用了一个无限循环来持续接收用户输入。

C语言实现简单计算器程序

C语言实现简单计算器程序

C语⾔实现简单计算器程序这两天在看⼀个C语⾔写的计算器程序,做了不少的功夫,跟着作者⼀步步的进⾏完善,了解了许多细节性的东西,在此⾃⼰做个总结,加深⾃⼰对程序的印象,也算是梳理。

在该计算器程序,能进⾏加减乘除、sin、cos、exp等操作,同时能进⾏数值保存功能。

⽽该计算器使⽤逆波兰表⽰法。

即所有运算符都跟在操作数的后⾯,⽐如下列表达式:(1 - 2) * (4 + 5)采⽤逆波兰表⽰法表⽰为:1 2 - 4 5 + *逆波兰表达法中不需要圆括号,只要知道每个运算符需要⼏个操作数就不会引起歧义。

计算器程序实现很简单,具体原理如下:while(/* 下⼀个运算符或操作数不是⽂件结束指⽰符 */)if(/* 是数 */)/* 将该数压⼊到栈中 */else if (/* 是运算符 */)/* 弹出所需数⽬的操作数 *//* 执⾏运算 *//* 将结果压⼊到栈中 */else if (/* 是换⾏符 */)/* 弹出并打印栈顶的值 */else/* 出错 */在程序设计中,使⽤模块化思想,getop函数来进⾏读⼊,该函数返回⼀个标识,⽤来标识读⼊的是什么类型。

主循环体中根据该标识执⾏相应的动作。

以下是该程序:(我将所有函数和变量放在同⼀⽂件)#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXOP 100#define NUMBER '0' //标识读⼊的是数字#define NAME 'n' //标识读⼊的是字符串(函数名或⾮法字符串)#define ALPHA 26int getop(char []);void push (double); //压栈double pop(void); //出栈void clear(void); //清空栈void mathfnc(char []); //执⾏相应的数学函数sin、cos、exp等int main(void){int type;int i, var = 0;double op1, op2,v;char s[MAXOP];double variable[ALPHA];for (i = 0; i < ALPHA; i++) //初始化⽤于保存数值的变量数组variable[i] = 0.0;while ((type = getop(s)) != EOF) //读取输⼊{switch (type){case NUMBER:push (atof(s));break;case NAME:mathfnc(s);break;case '+':push (pop() + pop());break;case '*':push (pop() * pop());break;case '-':op2 = pop();push (pop() - op2);break;case '/':op2 = pop();if (op2 != 0.0)push (pop() / op2);elseprintf ("error: zero divisor\n");break;case '%':op2 = pop();if (op2 != 0.0)push (fmod(pop(), op2));elseprintf ("error: zero divisor\n");break;case '?': //打印栈顶元素op2 = pop();printf ("\t%.8g\n", op2);push (op2);break;case '=': //保存数值pop();if (var >= 'A' && var <= 'Z')variable[var - 'A'] = pop();elseprintf ("error: no variable name\n");break;case 'c':clear();break;case 'd': //复制栈顶元素op2 = pop();push(op2);push(op2);break;case 's': //交换栈元素op1 = pop();op2 = pop();push(op1);push(op2);case '\n':v = pop(); //v保存最后的⼀次结果printf ("\t%.8g\n", v);break;default:if (type >= 'A' && type <= 'Z')push(variable[type - 'A']);else if (type == '@') //输⼊的字符@表⽰最近⼀次结果值 push(v);elseprintf ("error: unknown command %s\n", s);break;}var = type;}return 0;}/* ----------------------------------------------------------- */#define MAXVAL 100int sp = 0; //标识栈顶double val[MAXVAL];void push(double f){if (sp < MAXVAL)val[sp++] = f;elseprintf ("error: stack full, can't push %g\n", f);}double pop(void){if (sp > 0)return val[--sp];else{printf ("error: statck empty\n");return 0.0;}}void clear(void){sp = 0;}void mathfnc (char s[]){double op2;if (strcmp (s, "sin") == 0)push(sin(pop()));else if(strcmp (s, "cos") == 0)push(cos(pop()));else if(strcmp (s, "exp") == 0)push(exp(pop()));else if(strcmp (s, "pow") == 0){op2 = pop();push (pow(pop(), op2));}elseprintf ("error: %s not supported\n", s);}/* ----------------------------------------------------------- */#include <ctype.h>int getch(void);void ungetch(int);int getop(char s[]){int i, c;while ((s[0] = c = getch()) == ' ' || c == '\t') //过滤开头的空⽩字符;s[1] = '\0';i = 0;if (islower(c)) //判断是否为⼩写字母,也即读取由⼩写字母组成的字符串 {while (islower(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);if (strlen (s) > 1)return NAME;elsereturn c;}if (!isdigit(c) && c != '.' && c != '-')return c;if (c == '-') //⽤于判断是负数还是减操作{if (isdigit(c = getch()) || c == '.')s[++i] = c;else{if (c != EOF)ungetch(c);return '-';}}if (isdigit(c)) //收集整数部分while (isdigit(s[++i] = c = getch()));if (c == '.') //收集⼩数部分while (isdigit(s[++i] = c = getch()));s[i] = '\0';if (c != EOF)ungetch(c);return NUMBER;}/* ----------------------------------------------------------- *//** 引⽤以下两个函数是因为:程序不能确定它已经读⼊的输⼊是否⾜够 ** 除⾮超前多读⼊⼀些输⼊,在本程序中,读⼊⼀些字符合成⼀个数字 ** 所以在看到第⼀个⾮数字字符之前,已经读⼊的数的完整性是不能确定的* 由于程序要超前读⼊⼀个字符,这样就导致最后⼜⼀个字符不属于当前所要读⼊的数*/#define BUFSIZE 100char buf[BUFSIZE];int bufp = 0;int getch(void){return (bufp > 0) ? buf[--bufp] : getchar();}void ungetch (int c){if (bufp >= BUFSIZE)printf ("ungetch: too many characters\n");elsebuf[bufp++] = c;}该程序虽然简单,但是还是存在⼀些⼩⼩的问题,⽐如没有数据时进⾏pop的话,会打印栈中⽆数据同时返回数值0.0,在循环体中许多执⾏操作会将该数值保存到栈中,之后打印该值,⽤户体验度⽐较差。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。

二、实验原理1、四则运算的优先级规则在数学运算中,先计算括号内的表达式,然后按照先乘除后加减的顺序进行计算。

乘除法的优先级高于加减法,如果在同一级运算中,按照从左到右的顺序进行。

2、数据结构的选择使用栈(Stack)数据结构来存储操作数和运算符。

栈具有先进后出的特点,非常适合处理表达式中的括号和优先级。

3、算法思路首先,将输入的表达式进行解析,将数字和运算符分别存储到不同的栈中。

然后,根据运算符的优先级进行计算,将计算结果重新压入栈中,直到表达式计算完毕。

三、实验设备及环境1、编程工具:选择了 Python 语言作为主要的编程工具,使用PyCharm 集成开发环境进行代码编写和调试。

2、操作系统:Windows 10 操作系统。

四、实验步骤1、定义数据结构定义两个栈,一个用于存储操作数(operandStack),一个用于存储运算符(operatorStack)。

2、表达式解析遍历输入的表达式字符串,将数字转换为整数并压入操作数栈,将运算符压入运算符栈。

遇到左括号直接压入运算符栈,遇到右括号则进行括号内的运算。

3、运算处理当运算符栈不为空时,取出栈顶的运算符和两个操作数进行计算。

根据运算符的优先级进行相应的运算,将结果压入操作数栈。

4、最终结果当表达式解析完毕后,操作数栈中的唯一元素即为表达式的计算结果。

五、代码实现```pythonclass SimpleCalculator:def __init__(self):selfoperandStack =selfoperatorStack =def calculate(self, expression):for char in expression:if charisdigit():selfoperandStackappend(int(char))elif char in '+/()':if char =='(':selfoperatorStackappend(char)elif char ==')':while selfoperatorStack-1!='(':operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackpop()else:while selfoperatorStack and selfhasHigherPrecedence(selfoperatorStack-1, char):operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackappend(char)while selfoperatorStack:operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)return selfoperandStackpop()def hasHigherPrecedence(self, op1, op2):if op1 in '/' and op2 in '+':return Trueelif op1 in '+' and op2 in '+':return Falseelif op1 in '/' and op2 in '/':return Falsereturn Falsedef performOperation(self, operand1, operand2, operator):if operator =='+':return operand1 + operand2elif operator =='':return operand1 operand2elif operator =='':return operand1 operand2elif operator =='/':if operand2 == 0:raise ValueError("除数不能为 0")return operand1 / operand2if __name__ =="__main__":calculator = SimpleCalculator()expression ="2 + 3 (4 1) / 2"result = calculatorcalculate(expression)print("计算结果:", result)```六、实验结果与分析1、测试用例及结果输入表达式:"2 + 3 4",计算结果:14输入表达式:"(2 + 3) 4",计算结果:20输入表达式:"5 2 3",计算结果:-1输入表达式:"10 / 2 + 1",计算结果:62、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。

实验01 简易计算器设计

实验01 简易计算器设计

实验1简易计算器设计一、实验目的1、掌握事件结构的编程2、掌握字符串与数字的相互转化3、掌握条件结构的编程4、生成exe文件二、实验要求利用LabVIEW的事件结构编写一个简单的计算器程序,实现加、减、乘、除等运算,并能对计算结果进行清除,前面板按钮及布局如下图所示。

图1 计算机界面要求最后创建项目,生成exe可执行文件。

三、实验设备1、计算机2、安装LabVIEW软件(版本不限,本实验指导书以2018版为例)四、实验说明1、程序流程图图2 程序流程图2、设计思路计数器界面中每个按键相当于一个布尔输入控件,共17个;计算结果的显示为一个字符串显示控件。

每次按键触发一个按键事件,利用LabVIEW的事件响应结构对每个按键进行响应,实现要求的简易计算器功能。

表1 布尔输入控件的说明前面板除了17个布尔输入控件外,还包含输入数据的输入临时值控件、输入1、输入2、存储操作运算符的运算符临时值控件、运算结果和过程显示,过程显示充当计算器的显示器。

3、算法流程图包括程序初始化、运算符判断、数据存储与运算、显示等。

图3 算法流程图五、实验过程1、前面板设计打开IabVIEW2018软件,新建一个VI,并命名为虚拟计算器。

在前面板上右击,在布尔控件中选择“确定按钮”;右击,打开显示项,去掉标签;调整按键到合适的大小;再拷贝16个按键,排列好,C键和±键还需要调整一下大小;修改各按键的布尔文本;双击各按键到后面板中修改各自的标签,例如将布尔文本为1的按键标签改为“数字1”,将布尔文本为+的按键标签改为“加”,以方便编程时识别各按键。

再设置一个字符串显示控件,用来显示运算数值、运算符号和运算结果,修改标签为“过程显示”;还需要设置5个字符串显示控件,标签分别为“输入临时值”、“输入1”、“输入2”、“运算符临时值”、“运算结果”。

得到如下图所示的计算器前面板、后面板。

图4 前面板布局图图4 后面板2、初始化将前面板中的各个显示控件初始化,如图5所示。

简易计算器设计与实现

简易计算器设计与实现

简易计算器设计与实现一、引言计算器是一种广泛应用的工具,可以进行基本的算数运算和一些科学计算,能够极大地方便人们的日常生活和工作。

本文将介绍一个简易的计算器的设计和实现方案。

二、设计思路1.功能选择:通过提供菜单供用户选择,以实现计算器常见功能如加法、减法、乘法、除法等。

2.输入输出处理:用户通过键盘输入待计算的数字和操作符,计算器将结果输出到屏幕上。

3.算术运算:根据用户选择的功能,进行相应的算术运算,如加法、减法、乘法、除法等。

4.错误处理:对于非法的输入,如除数为0,需要给出错误提示。

三、详细设计1.界面设计:计算器通过命令行界面展示,用户通过菜单选择功能。

界面可以提供以下功能选择菜单:1)加法2)减法3)乘法4)除法5)退出2.输入输出处理:在命令行界面上提示用户输入数字和操作符,并读取用户输入的数据。

用户输入格式为两个数字和一个操作符,操作符为"+","-","*"或"/"。

3.算术运算:a)加法运算:将两个数字相加,得到结果。

b)减法运算:将第一个数字减去第二个数字,得到结果。

c)乘法运算:将两个数字相乘,得到结果。

d)除法运算:将第一个数字除以第二个数字,得到结果。

在执行除法运算前,需要检查除数是否为0,如果为0,则给出错误提示。

4.错误处理:在用户选择除法运算时,需要检查除数是否为0。

如果为0,则输出错误提示信息,提示用户输入合法操作数。

五、实现以下为Python语言实现的简易计算器代码示例:```pythondef add(a, b):return a + bdef subtract(a, b):return a - bdef multiply(a, b):return a * bdef divide(a, b):if b == 0:raise ValueError("除数不能为0")return a / bdef calculator(:while True:print("请选择功能:")print("1) 加法")print("2) 减法")print("3) 乘法")print("4) 除法")print("5) 退出")choice = int(input()if choice == 1:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) result = add(a, b)print("计算结果:%f" % result)elif choice == 2:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) result = subtract(a, b)print("计算结果:%f" % result)elif choice == 3:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) result = multiply(a, b)print("计算结果:%f" % result)elif choice == 4:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) try:result = divide(a, b)print("计算结果:%f" % result)except ValueError as e:print("错误:%s" % str(e))elif choice == 5:breakelse:print("无效的选择,请重新选择功能。

简单计算器eda设计最终打印版

简单计算器eda设计最终打印版

目录第一章设计原理 (1)1.1 课程设计依据 (1)1.2 课程设计内容及原理 (1)1.3 课程设计要求 (1)第二章设计流程 (2)2.1设计流程图 (2)2.2 LED灯接线部分显示 (3)第三章模块连接 (4)3.1 四选一多路器 (4)3.1.1多路器程序设计 (4)3.1.2四选一多路器仿真图 (5)3.1.3四选一多路器仿真波形分析 (5)3.2 7段数码管显示 (5)3.2.1数码管程序设计 (5)3.2.2数码管仿真图 (6)3.2.2数码管仿真图分析 (6)3.3 循环扫描模块 (7)3.3.1循环扫描程序 (7)3.3.2循环扫描仿真图 (8)3.3.3 循环扫描模块分析 (8)3.4 简易计算器总体程序设计 (8)3.4.1简单计算器程序设计 (8)3.4.2简单计算器总体仿真图 (11)3.4.3简单计算器仿真图设计分析 (11)第四章设计体会 (12)参考文献 (13)第一章设计原理1.1 课程设计依据在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。

1.2 课程设计内容及原理设计一个简单计算器,采用简单4*4计算器键盘,输入2位十进制数进行+、-、 *、/ 四种运算,输入数据分别用两位数码管显示,输出用四位数码管显示4位10进制数,其中除法的结果显示分为商和余数两部分,要求采用时序逻辑设计实现计算器功能。

为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。

实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。

从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。

简单计算器课程设计(DOC)

简单计算器课程设计(DOC)

简单计算器课程设计一. 课程设计的目的Java语言是此刻流行的网络编程语言,它拥有面向对象、跨平台、散布应用等特色。

面向对象的开发方法是此刻世界最流行的开发方法,它不单具有更切近自然的语义,并且有益于软件的保护和继承。

为了进一步稳固讲堂上所学到的知识,深刻掌握Java语言的重要观点及其面向对象的特征,锻炼学生娴熟的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java 程序设计课程设计。

经过此次课程设计,稳固所学Java 语言基本知识,增进Java 语言编写基本功,掌握 JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。

使学生经过该教课环节与手段,把所学课程及有关知识加以举一反三,全面掌握 Java 语言的编程思想及面向对象程序设计的方法,为此后从事实质工作打下坚固的基础。

二. 设计方案论证1.开发环境:JAVA编程工具 JDK 1.5.0 ,操作系统WindowsXP.2.功能描绘 :本计算器能够进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还能够进行(八进制, 十进制, 十六进制)之间的互相变换, 八进制最多能够输入19 位数, 十进制最多能够输入18 位数,十六进制最多能够输入14 位数,backspace 表示退格,clear 表示初始化,在window 下直接运转(Jsp2003.bat )即可,界面为灰白对称。

3.纲要设计 :**********************************************************类名 : This_number_too_big作用 :自定义的异样类,用来办理计算结果溢出继承的父类 : Exception类实现的接口 :没有**********************************************************class This_number_too_big extends Exception{}// 自定义的一个结果溢出异样类**********************************************************类名 : Jsp2003作用:主类继承的父类 : Frame 类实现的接口 : ItemListener类,ActionListener类**********************************************************class Jsp2003 extends Frame implements ItemListener,ActionListener{public int number=0,length=18;//number 是用来记录输入的数字个数,//length是用来设置在不一样进制下同意输入的最多半字位数,默以为十进制char mark='n';//设置运算符号为没有即为‘ n’,它的值是‘ +’‘ - ’‘ * ’‘ / ’public double data=0;//设置运算数据为零public char ch;//用到暂时寄存所按按钮的第一个字符public boolean Refresh=false;//设置 lab 能否要在输入数据的时候刷新,初始为否4.主要方法说明://用来办理按了运算符后的计算 -public void js() throws This_number_too_big //指定由method抛出异常{if (mark=='n') //没有运算符{mark=ch; //,则设置运算符为刚才输入的字符,data=Double.parseDouble(lab.getText());//则设置运算数据为lab 的值Refresh=true;// 则设置下一次输入的时候要刷新lab}else //假如采纳的是连续运算(即没有使用‘=’号)则运转下边的语句{switch (mark) //依据运算符计算结果,并把结果保留到data{ case '+': data+=Double.parseDouble(lab.getText()); break;case '-': data-=Double.parseDouble(lab.getText()); break;case '*': data*=Double.parseDouble(lab.getText()); break;case '/': data/=Double.parseDouble(lab.getText()); break;}lab.setText(Double.toString(data)); //显示运算结果mark=ch;// 设置运算符为刚才按下的运算符Refresh=true;// 则设置下一次输入的时候要刷新 labnumber=lab.getText().length();//设置输入的字符个数// System.out.println(lab.getText());//用来调试用的if (data>Double.MAX_VALUE)//假如 data 超出 double 种类的最大值则抛出自定义的一个异样类{throw new This_number_too_big(); }}}//end js() methodpublic void enter()//办理输入字符{if(Refresh==true)//假如已经设置了运算符则在下一次输入数据的时候要把从前 lab 的内容消除去{lab.setText("0"); number=0; Refresh=false;}if(lab.getText().charAt(0)=='0'&& lab.getText().length()==1)//假如 lab 的内容为 0 则, lab 的内容将被所输入的字符取代,//不然直接在 lab 的内容后边加上所输入的字符{lab.setText(Character.toString(ch)); number++;}elseif(number<length){number++;lab.setText(lab.getText()+ch);}}//end enter() method//八进制或十六进制变换成十进制I public String goto_10(String s,long l)//参数 s:是要变换的字符串,因为输入的控制,保证了字符串的合法性;//参数 l :使用来设置是将 8 进制仍是 16 进制变换成 10 进制,它的有效值为8或 16;{ String str=s; //用来变换的字符串long j=l; //表示进制long lg=0,jing=1;//lg用来记录权乘和,jing用来记录位权char cha;//暂时记录要变换的字符for(int i=1;i<=str.length();i++){ cha=str.charAt(str.length()-i);switch(cha){ case '1': lg=lg+1*jing;break;case '2': lg=lg+2*jing;break;case '3': lg=lg+3*jing;break;case '4': lg=lg+4*jing;break;case '5': lg=lg+5*jing;break;case '6': lg=lg+6*jing;break;case '7': lg=lg+7*jing;break;case '8': lg=lg+8*jing;break;case '9': lg=lg+9*jing;break;case 'A': lg=lg+10*jing;break;case 'B': lg=lg+11*jing;break;case 'C': lg=lg+12*jing;break;case 'D': lg=lg+13*jing;break;case 'E': lg=lg+14*jing;break;case 'F': lg=lg+15*jing;break;}jing*=j; //位权升一级,为下次使用做好准备}return Long.toString(lg);}//end String goto_10() method}3.系统流程图开始初始化数据Double result=0; //储存结果Boolean newnum=true; //能否新数String lastop=” =”; /储存操作符按下数字按钮按下操作符( +-* 、 =)按钮判断把目前文本框的内容转为double 后传给calc 方法calc(double.parsedouble(txt.gettext()))newnumTrue false文本框显示新数;文本框接着显示Lastop=”操作txt.settext(“数txt.settext(txtgettext()+ ”符”newnum=true 字”)newnum=false 数字”)4.详尽设计第一剖析这个说要达成的任务,它的主要任务是达成十六进制、十进制、八进制和二进制之间的互相转变,需要包括负数,但不用考虑小数。

实用计算器的程序设计及代码示例

实用计算器的程序设计及代码示例

实用计算器的程序设计及代码示例计算器是现代人经常使用的工具,它能够进行各种数学运算,如加减乘除、取余、开方等。

本文将介绍实用计算器的程序设计和提供代码示例,帮助读者了解计算器的原理和实现方式。

一、程序设计思路在设计实用计算器的程序时,首先需要确定计算器的功能和界面设计。

一般来说,一个基本的计算器应该具备以下功能:数字键、运算符键、等号键、清除键和显示屏。

程序的设计思路如下:1. 定义一个变量num,用于保存当前输入的数字。

2. 定义一个变量result,用于保存计算结果。

3. 通过按钮点击事件,获取用户输入的数字和运算符,并根据用户的选择进行相应的计算。

4. 将计算结果显示在显示屏上。

二、代码示例下面是一个简单的实用计算器程序的代码示例,采用Python语言编写:```from tkinter import *def clear():display.delete(0, END)def calculate():expression = display.get()result = eval(expression)display.delete(0, END)display.insert(0, result)def button_click(number):current = display.get()display.delete(0, END)display.insert(0, str(current) + str(number))root = Tk()root.title("实用计算器")display = Entry(root, width=25, borderwidth=5)display.grid(row=0, column=0, columnspan=4, padx=10, pady=10)button_1 = Button(root, text="1", padx=10, pady=10, command=lambda: button_click(1))button_2 = Button(root, text="2", padx=10, pady=10, command=lambda: button_click(2))button_3 = Button(root, text="3", padx=10, pady=10, command=lambda: button_click(3))button_4 = Button(root, text="4", padx=10, pady=10, command=lambda: button_click(4))button_5 = Button(root, text="5", padx=10, pady=10, command=lambda: button_click(5))button_6 = Button(root, text="6", padx=10, pady=10, command=lambda: button_click(6))button_7 = Button(root, text="7", padx=10, pady=10, command=lambda: button_click(7))button_8 = Button(root, text="8", padx=10, pady=10, command=lambda: button_click(8))button_9 = Button(root, text="9", padx=10, pady=10, command=lambda: button_click(9))button_0 = Button(root, text="0", padx=10, pady=10, command=lambda: button_click(0))button_add = Button(root, text="+", padx=10, pady=10,command=lambda: button_click("+"))button_subtract = Button(root, text="-", padx=10, pady=10,command=lambda: button_click("-"))button_multiply = Button(root, text="*", padx=10, pady=10, command=lambda: button_click("*"))button_divide = Button(root, text="/", padx=10, pady=10, command=lambda: button_click("/"))button_clear = Button(root, text="C", padx=10, pady=10, command=clear)button_equal = Button(root, text="=", padx=10, pady=10, command=calculate)button_1.grid(row=1, column=0)button_2.grid(row=1, column=1)button_3.grid(row=1, column=2)button_add.grid(row=1, column=3)button_4.grid(row=2, column=0)button_5.grid(row=2, column=1)button_6.grid(row=2, column=2)button_subtract.grid(row=2, column=3)button_7.grid(row=3, column=0)button_8.grid(row=3, column=1)button_9.grid(row=3, column=2)button_multiply.grid(row=3, column=3)button_0.grid(row=4, column=0)button_clear.grid(row=4, column=1)button_equal.grid(row=4, column=2)button_divide.grid(row=4, column=3)root.mainloop()```以上代码使用了`tkinter`库创建了一个简单的图形界面,包含数字按钮、运算符按钮、清除按钮和等于按钮。

简单计算器程序设计

简单计算器程序设计

《网络编程技术》结课论文2012 — 2013学年第二学期题目:简单计算器程序专业班级:网信10-2学号:************姓名:-----------指导老师:---------日期:2013-06-25目录1引言 (3)2基础理论 (3)2.1 AWT 组件 (3)2.2 Swing 组件 (3)2.3 java事件处理机制 (4)3 功能设计 (5)3.1计算器系统概述 (5)3.2功能模块设计 (6)3.3详细设计 (6)4 系统实现 (7)4.1需求分析 (7)4.2设计思路 (8)4.3主要代码展示及说明 (8)4.4调试与分析 (12)5 总结 (12)参考文献 (13)1引言近年来随着计算机和网络在社会领域的发展,java的应用正在不断地走向深入, Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。

Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。

Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。

特别是Java企业应用编程接口为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

本次设计是通过java编程技术来设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算,该计算器可以实现加法、减法、乘法、除法的简单运算,也可以实现一些简单的扩展运算,这次课程设计的主要目的在于检测对java 应用的熟练程度,发现问题并及时改正和提高,同时扩展对java知识的进一步了解和认识,强化自己的编程能力,为将来在新的旅途中能更好的发挥自身的才能!2基础理论2.1 AWT 组件布局管理器管理组件如何放置在容器中,AWT 中最常用的四种布局类:FlowLayout、BorderLayout、GridLayout、CardLayout。

本项目主要采用了GridLayout 布局。

毕业设计简易加减乘除计算器

毕业设计简易加减乘除计算器

毕业设计题目简易加减乘除计算器系别专业班级姓名学号指导教师日期设计任务书设计题目:简易加减乘除计算器设计要求:1.根据所学内容运用编程做一个简易加减乘除计算器,实现加、减、乘、除、等以及清零的功能。

2.设置一组数码管, 使其能够显示程序运行,按键动作的内容。

3.设置一组按键,使其键依次对应0——9、“+”、“-”、“*”、“/”、“=”和清除键。

4.可以进行小于255的数的加减乘除运算,并可连续运算。

当键入值大于255时,将自动清零,可重新输入。

设计进度要求:第一周:确定题目,寻找单片机和计算器设计的相关资料;第二周:读懂资料,有初步的设计思路;第三周:绘制硬件电路图;第三周:设计软件框图;第四周:相应软件设计(程序设计);第五周:进行程序调试并且修改;第六周:写毕业设计论文;第七周:修改并提交毕业设计;第八周:准备论文答辩;指导教师(签名):摘要在很多领域的数据处理中要用到数学运算,作为计算机自动处理系统更显得重要。

此项目设计以单片机为核心部件的计算器,采用4*4矩阵式键盘,16个键依次对应0——9、“+”、“-”、“*”、“/”、“=”和清除键。

使用单片机最小应用系统1模块,简单方便。

采用静态显示,显示器由5个共阴极数码管组成。

输入只有两个信号,它们是串行数据线DIN和移位信号CLK。

5个串/并行移位寄存器芯片74LS164首尾相连。

每片的并行输出作为LED数码管的段码。

本计算器系统简单,实用性强,成本低,使用维护方便,软件功能强,运行稳定可靠等优点。

关键词:单片机,计算器,键盘,静态显示前言随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。

在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS –51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。

C语言程序设计之简单计算器

C语言程序设计之简单计算器

C语言程序设计之简单计算器C语言是一种广泛应用于操作系统、嵌入式系统和各种应用程序的高级程序设计语言。

在学习C语言的过程中,我们可以通过编写简单的计算器程序来巩固所学的知识。

计算器程序的基本功能是接收用户输入的两个数字和一个运算符,然后根据用户的选择进行相应的运算,最后输出结果。

下面是一个简单的计算器程序的实现。

首先,我们需要包含头文件stdio.h和stdlib.h,以便使用标准输入输出函数和动态内存分配函数。

#include <stdio.h>#include <stdlib.h>接下来,我们定义一个函数menu,用于显示计算器的菜单选项。

用户可以选择进行加法、减法、乘法或除法运算,或者退出程序。

void menprintf("====================================\n");printf("简单计算器\n");printf("1. 加法\n");printf("2. 减法\n");printf("3. 乘法\n");printf("4. 除法\n");printf("5. 退出程序\n");printf("====================================\n");printf("请选择您要进行的运算:");然后,我们定义一个函数add,用于执行加法运算。

该函数接收两个参数:num1和num2,分别表示用户输入的两个数字。

float add(float num1, float num2)return num1 + num2;类似地,我们可以定义函数sub、mul和div,用于执行减法、乘法和除法运算。

float sub(float num1, float num2)return num1 - num2;float mul(float num1, float num2)return num1 * num2;float div(float num1, float num2)if (num2 != 0)return num1 / num2;} elseprintf("错误:除数不能为0!\n");return 0;}最后,我们在主函数中调用这些函数,实现计算器的功能。

MSP430单片机课程设计-简单计算器设计

MSP430单片机课程设计-简单计算器设计
2
MSP430 单片机课程设计
unsigned char disbuff[8] = {20,20,0,0,0,0,0,0};//初始数码管 unsigned char getkey(void); unsigned int qiushu(); void clear(void); void zhuanhuan(); void delay(unsigned int j) { for(uint i=0;i<j;i++); } unsigned int qiushu() //转化成相应的十进制整数 {unsigned int y; y=disbuff[2]*100000+disbuff[3]*10000+disbuff[4]*1000+disbuff[5]*100 +disbuff[6]*10+disbuff[7]; return y; } void clear(void) {unsigned int a; for(a=7;a>1;a--) disbuff[a]=0; } //清除屏幕
实验二:猜数字游戏设计
一、目的
利用单片机芯片 MSP430x14x、四位八段共阴数码管,设计一个猜数字游戏, 并将游戏结果显示在数码管上。
二、功能
要求该设计能实现如下的功能:游戏开始后,先在程序内随即设定四个 0-9 之间的不同数,作为游戏数答案。然后用户给出 4 个数,该软件会将您提交的数 与它自动产生的数进行比较,结果在八段数码管上显示成"kAsB"。k 代表位置正 确数字也正确的字数,s 代表数字正确但位置不正确的字数。当 k=4 且 s=0 时, 则比较正确显示“GOOD” ,进行下一次比较。
4
MSP430 单片机课程设计

简单计算机程序设计

简单计算机程序设计

专业综合课程设计任务书学生姓名: aaaaaa 专业班级: 电信 1102班指导教师: 李达工作单位: 信息工程学院题目5:简单计算器程序设计初始条件:(1)提供实验室机房及PC机;(2)微机原理与通信接口的基本理论学习。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)编写一个程序实现十进制加减乘除运算;(2)在命令提示后输入算式,运算符号不超过四个;(3)回车后进行计算并以十进制显示结果;(4)程序采用汇编语言在PC机上完成;(5)写出系统需求分析、原理图和程序实现流程图;(6)对结果进行分析;(7)要求阅读相关参考文献不少于5篇;(8)根据课程设计有关规范,按时、独立完成课程设计说明书。

时间安排:(1) 布置课程设计任务,查阅资料,确定方案四天;(2) 进行编程设计一周;(3) 完成课程设计报告书三天;指导教师签名: 年月日系主任(或责任教师)签名: 年月日目录1.引言 (1)1.1设计目的 (1)1.2 设计要求及需求分析 (1)1.2.1设计要求 (1)1.2.2需求分析 (1)1.3 软件运行环境 (2)2.总体设计分析 (2)2.1题目分析 (2)2.2 设计概述 (2)3.设计步骤 (3)3.1运算表达式输入 (3)3.1.1 运算表达式合法性的检查方法 (3)3.2 数值的补码转换方法 (4)3.3 表达式计算 (5)3.3.1 运算优先级别的静态确定法 (6)3.3.2 正负数区分 (7)3.3.3 补码到ASCII码转换 (7)3.3.4除法运算 (9)4.软件运行结果 (10)5.软件改进计划 (12)6.程序源代码 (13)7.心得体会 (20)参考文献 (21)1.引言1.1设计目的本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单计算器程序设计2010-01-20 16:441、编写一个程序实现十进制加减乘除运算2、在命令提示后输入算式,运算符号不超过四个3、回车后进行计算并以十进制显示结果;能做带括号的运算,输入错误能报警data segmentmsg1 db 'Please Input an Expression:',0AH,0DH,'$' msg2 db 'the result is:$'db '('num db 200 dup (0)temp1 db 200 dup(0),13temp dw 0data endsstack segmentdb 200 dup (?)stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axlea dx,msg1mov ah,9int 21hcall inputagain2:lea si,numagain1:inc sicmp byte ptr[si],13je outtcmp byte ptr[si],')'jne again1call chasc1call countpush axjmp again2outt:pop bxmov ah,2mov dl,10int 21hmov dl,13int 21hlea dx,msg2mov ah,9int 21hcall chaoumov ah,8int 21hmov ah,4chint 21h;************************************** input proc;输入子程序能纠错push axpush bxpush cxpush dxpush sipush dixor si,sixor bh,bhmov bl,0ffhxor cx,cxtop:mov ah,8int 21hcmp al,8jne next1cmp si,0jne ne1mov bl,0ffhjmp next6ne1:mov ah,2mov dl,8int 21hmov dl,0int 21hmov dl,8int 21hdec sicmp byte ptr[num+si],'(' jne ndec clmov bl,0ffhjmp nextn:cmp byte ptr[num+si],')' jne ne2dec chxor bl,bljmp nextne2:cmp byte ptr[num+si-1],')' jne ne5xor bl,bljmp nextne5:xor bl,blcmp byte ptr[num+si-1],30h jae nextmov bl,0ffhnext:jmp topnext1:cmp al,30hjae next2cmp al,'*'je next7cmp al,'/'je next7cmp al,'-'je next7cmp al,'+'je next7cmp al,'('je next5cmp al,')'je next4cmp al,13je end1next6:mov ah,2mov dl,7int 21hjmp topnext7:cmp bl,0ffhje next6xor bl,0ffhjmp next3next2:cmp al,39hja next6xor bl,blcmp byte ptr[num+si-1],')' je next6jmp next3next4:inc chcmp ch,clja next0cmp byte ptr[num+si-1],')' je next3cmp byte ptr[num+si-1],30h jb next0jmp next3next0:dec chjmp next6next5:cmp si,0je next8cmp byte ptr[num+si-1],')' je next6cmp byte ptr[num+si-1],30h jae next6next8:inc clnext3:mov dl,almov ah,2int 21hmov [num+si],alinc sijmp topend1:cmp ch,cljne next6cmp byte ptr[num+si-1],')'je ou1cmp byte ptr[num+si-1],30hjb next6ou1:mov byte ptr[num+si],')'mov byte ptr[num+si+1],13pop dipop sipop dxpop sipop dxpop cxpop bxpop axretinput endp;**************************************;***************************************** chasc1 proc;提取括号中算式;si为')'的地址往前扫“(”为止pop bplea bx,word ptr[temp1+198]mov byte ptr[si],0n5:mov di,sin4:cmp byte ptr[si],'('je n3n7:dec sicmp byte ptr[si],0je n1cmp byte ptr[si],30hjb n2jmp n7n2:call chasc2mov word ptr[bx],axdec bxn9:cmp byte ptr[si],2ahjb n8mov al,byte ptr[si]mov byte ptr[bx],aldec bxdec bxn8:jmp n5n1:pop word ptr[bx]dec bxn6:mov byte ptr[si],2dec sicmp byte ptr[si],1jne n6mov byte ptr[si],2dec sijmp n9n3:mov byte ptr[si],1inc bxpush bpretchasc1 endp;************************************* ;*********************************** chasc2 proc;ASCII转为十进制push bxpush cxpush dxpush sipush dimov cx,disub cx,sidec cxmov si,1xor bx,bxaga:dec dimov al,byte ptr[di]sub al,30hmul siadd bx,axmov ax,simov si,10mul simov si,axloop agamov ax,bxot:pop dipop sipop dxpop cxpop bxretchasc2 endp;**************************************;*********************************** count proc;四则运算;入口参数:bxxor si,simov di,bxcmul:cmp byte ptr[bx+2],'+'je resccmp byte ptr[bx+2],'-'je rescinc sipush word ptr[bx]resc:inc bxinc bxcmp byte ptr[bx],'*'je nexcmp byte ptr[bx],'/'je nex0cmp byte ptr[bx],13inc bxjmp cmulnex:inc bxpop axmov cx,word ptr[bx] imul cxpush axjmp rescnex0:inc bxpop axxor dx,dxmov cx,word ptr[bx] idiv cxpush axjmp resccadd:mov bx,dishl si,1add sp,simov bp,spsub bp,2mov ax,word ptr[bx] inc bxinc bxcso:cmp byte ptr[bx],'+' je nex1cmp byte ptr[bx],'-' je nex1cmp byte ptr[bx],13 je overmov ax,word ptr[bp] dec bpdec bpabo:inc bxinc bxinc bxcmp byte ptr[bx],'*'je abocmp byte ptr[bx],'/'je abojmp csonex1:mov cl,byte ptr[bx]cmp byte ptr[bx+3],'*'je nex2cmp byte ptr[bx+3],'/'je nex2inc bxmov dx,word ptr[bx]inc bxinc bxjmp nex3nex2:mov dx,word ptr[bp]sub bp,2abo1:inc bxinc bxinc bxcmp byte ptr[bx],'*'je abo1cmp byte ptr[bx],'/'je abo1nex3:cmp cl,'+'jne suadd ax,dxjmp add1su:sub ax,dxadd1:jmp csoover:retcount endp;*********************************;************************************* chaou proc;以十进制形式显示结果xor bp,bpmov ax,bxshl bx,1jnc cupush axmov ah,2mov dl,'-'int 21hpop axxor bx,bxsub bx,axmov ax,bxcu:mov cx,4mov di,10mov bx,10000ga:xor dx,dxdiv bxpush dxcmp bp,0jne bacmp ax,0je zroba:add al,30hmov dl,almov ah,2int 21hinc bpzro:mov ax,bxxor dx,dxdiv dimov bx,axpop axloop gaadd al,30hmov dl,almov ah,2int 21hretchaou endp;******************************************code ends end start。

相关文档
最新文档