四则运算练习题汇编

第一章四则运算练习题一、填空。(每空 1.5 分,共18 分)

1、在计算(200 —36M7)詔4时,先算(),再算(),最后算()法。

2、650 —320^80,如果要改变运算顺序,先算减法,那么必须使用括号,算式是()。

3、根据500-125=4,4+404=408,804 —408=396 组成一个综合算式是

()。

4、5人4 小时做了80 朵纸花,平均每人4 小时做()朵纸花,平均每人每小时做()朵纸花。

5、在一个没有括号的等式里,如果只有加减法,或者只有乘除法,要按

()的顺序计算,如果既有加减,又有乘除法,要先算(),后算()6、甲数是乙数的52 倍。

( 1 )、如果乙数是364,那么甲数是()。

(2)、如果甲数是364,那么乙数是()。

二、判断,(8 分)

1、25X25吃5X25=1 ()

2、比90 少2 的数的2 倍是176 ()

3、21、26、13 的平均数是20 ()

4、185 乘97 与53 的差,积是多少?列式是:185X97—53()

、用递等式计算下面各题(18 分)

3774-37X( 65+35 )540—(148+47 )-13

308—308-28)X11 10+120-24 )X5

238+7560- 90 )-14 21X(230—192-4)

四、列式计算,(9 分)

1 、725 加上475 的和除以25,商是多少?

2、1784 加上128 除以8再乘23,和是多少?

3、16乘以12 的积加上68,再除以4,得多少?

五、四年级爬杆比赛前 5 名的成绩如下表(9 分)( 1 )、右图每格代表()米。

(2)、用条形图表示每人的成绩。

(3)、()爬得最高;李平

比王江多爬()米,平均每人爬()米。

六、应用题(30 分)

1、一艘大船运了6 次货,一艘小船运了9 次货,大船每次运30 吨,小船每次运12 吨,大船和小船一共运了多少吨货?

2、刘老师批改98 篇作文,第二天批改了20 篇,比第一天多批改了8 篇,还有多少篇没有批改?

3、运动会上315 个同学参加体操表演。他们平均分成5 组,每组多少个同学?(解答后在检验)

4、光明小学共27 个班,每班各买一个脸盆和一条毛巾一共要用去189 元,每条毛巾 3 元,每个脸盆多少元?

5 、蔬菜店运来白菜1800 千克,花菜850 千克,每50 千克装一筐,白菜比花菜多多少筐?(用两种方法解答)

四则运算实验报告

实验3四则运算表达式求值 背景 在工资管理软件中,不可避免的要用到公式的定义及求值等问题。对于数学表达式的计算,虽然可以直接对表达式进行扫描并按照优先级逐步计算,但也可以将中缀表达式转换为逆波兰表达式,这样更容易处理。 问题描述 四则运算表达式求值,将四则运算表达式用中缀表达式,然后转换为后缀表达式,并计算结果。 基本要求 使用二叉树来实现。 实现提示 利用二叉树后序遍历来实现表达式的转换,同时可以使用实验2的结果来求解后缀表达式的值。 输入输出格式: 输入:在字符界面上输入一个中缀表达式,回车表示结束。 输出:如果该中缀表达式正确,那么在字符界面上输出其后缀表达式,其中后缀表达式中两相邻操作数之间利用空格隔开;如果不正确,在字符界面上输出表达式错误提示。 选作内容 (1)在输入输出方式上要求使用: 输入:将中缀表达式存于文本文件中,程序从该文本文件中读出表达式。 输出:如果该中缀表达式正确,则将后缀表达式输出到该文件中原表达式的后面,它们之间用“---”后相连;如果不正确,请在输出表达式错误提示到该文件原表达式的后面,它们之间用“---”相连。 (2) 利用堆栈来实现中缀表达式转换为后缀表达式。 测试用例 输入:21+23*(12-6) 输出:21 23 12 6 -*+ 程序代码:

#include #include using namespace std; #define SIZE 100 #define STACKINCREMENT 10 template //栈 class stack{ public: void InitStack() { S.base = (T *)malloc(SIZE * sizeof(T)); if(!S.base) exit(0); S.top = S.base; S.stacksize = SIZE; } void DestroyStack(){ free(S.base); } void ClearStack(){ S.top = S.base; } bool StackEmpty(){ if(S.top == S.base) return true; else return false; } int StackLength(){ return (S.top - S.base); } bool GetTop(T &t){ if(S.top != S.base){ t = *(S.top - 1); return true;} else return false; } void Push(T t){ if(S.top - S.base >= S.stacksize){ S.base = (T *)realloc(S.base,(S.stacksize + STACKINCREMENT) * sizeof(T)); if(!S.base) exit(0); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top = t; S.top++ ;

汇编语言四则运算

《微机原理与接口技术》 课程设计 电气与自动化工程系 通信工程 2010-12-28 院 系:专 业: 年级班级: 学 号: 姓 名: 指导教师:设计日期:

一、课程设计目的 每个同学在1-2周时间内,用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。 二、课程设计要求 从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。 三、课题分析 该程序设计的关键是要根据四则运算中()、*、/、+、-、= 的优先级设置符号的权值,其中(、*、/、+、-、)、= 的权值分别设置为5、4、4、3、3、1、0 ,然后根据权值的大小进行运算。程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。程序不断判断输入的符号是否是左括号‘(’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘(’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。需要注意的是程序执行完括号内表达式的运算及乘除运算后将在存储区MARK中覆盖符号(、)、*、/ 及紧跟着的权值,使得程序在运算整个四则运算表达式时当括号内表达式的运算及乘除运算结束后存储区MARK中只有‘ +、-’运算符及紧跟着的权值,然后按照+、- 运算符的左右顺序从左到右进行‘ +、- ’运算,当最后遇到等号‘ = ’时输出表达式的数值,然后再根据提示判断是否继续执行下一个四则运算表达式。

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

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学号 指导教师 完成日期

目录 目录错误!未定义书签。 1 概述错误!未定义书签。 设计目的错误!未定义书签。 设计内容错误!未定义书签。 2 系统需求分析错误!未定义书签。 系统目标错误!未定义书签。 主体功能错误!未定义书签。 开发环境错误!未定义书签。 3 系统概要设计错误!未定义书签。 系统的功能模块划分错误!未定义书签。系统流程图错误!未定义书签。 4系统详细设计错误!未定义书签。 5 测试错误!未定义书签。 测试方案错误!未定义书签。 测试结果错误!未定义书签。 6 小结错误!未定义书签。 参考文献错误!未定义书签。 附录错误!未定义书签。 附录源程序清单错误!未定义书签。

实现加减乘除四则运算的计算器 1 概述 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 开发环境 集成环境 3 系统概要设计 系统的功能模块划分 本题目实现的模块图如图3-1所示

汇编课程设计(有符号多位十进制数的四则运算计算器)

汇编语言课程设计实验报告 一、课程设计目的 《汇编语言程序设计》是计算机专业一门重要的核心课程,也是一门实践性很强的课程,而课程设计则是其中一个重要的应用实践环节。 本次课程设计的目的是提高分析问题、解决问题的能力以及实际动手能力,进一步加深对汇编语言程序设计基本理论的理解,熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础 二、实验环境 编译机器:IBM兼容PC 操作系统:Windows XP -SP2 中文版 编译工具:MASM 5.0 三、课程设计内容 1、编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示: -278+32= -132――12= 11*-32= -1234/-18= 要求程序能接收键入的算式,在接收到‘=’号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。如果键入算式后再键入‘.’,则显示结果并结束整个程序。(‘/’为整除) 程序设计框图: 程序源代码:

2、已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16位无符号二进制数,用以说明串的长度。试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。

程序设计框图: 程序代码: DATA SEGMENT ; DICTIONARY 字典字符串,首两个字节为 16 位无符号二进制数,说明字符串长度。 DICTIONARY DB 00,16H,"add an book dad egg " DB 100H DUP(20H) ; 空的缓冲区。 MSG_INTRO DB "Input the Word to Search : ","$" MSG_NOTFOUND DB "Not Found, Now Insert it . ",0AH,0DH,"$" MSG_NEWDICT DB 0AH,0DH,"New Dictionary : ","$" MSG_FOUND DB 0AH,0DH,"Found Word in Dictionary : ","$" MSG_POSITION DB 0AH,0DH,"Position : ","$" MSG_DICTLENGTH D B 0AH,0DH,"New Dictionary Length : ","$" MSG_NEWLINE DB 0AH,0DH,"$" BUFFER DB 10H DUP(20H) ; BUFFER 用于保存需要查询的单词。 WORD_LENGTH DB 0H CHAR_SPACE EQU 20H ;默认的单词间隔为空格。 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA start: MOV AX,DATA MOV DS,AX LEA BX,BUFFER;把buffer有效地址送BX MOV DX,OFFSET MSG_INTRO ;把偏移地址送DX通用寄存器 MOV AH,09H ;调用9号中断,输出MSG_INTRO INT 21H GET_WORD: ; 获取用户输入的需要查找的单词字符串。 MOV AH,01H INT 21H CMP AL,0DH ; 输入以回车结束。 JE INPUT_FINISH ;如果是回车,跳转输入结束 MOV [BX],AL INC BX ;BX加1,下一步修改字符长度

汇编实验之四则运算

计算机原理实验室实验报告 课程名称: 姓名学号班级成绩 设备名称及软件环境 实验名称四则运算实验日期 一.实验内容 从键盘输入一个十进制两位数的四则运算表达式, 如23*56-(8*19)/6+67-8=,编程计算表达式的值, 输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。 并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止。二.理论分析或算法分析 根据题目的要求,可以把整个源程序大致划分为几个基本结构: 程序加法、减法、乘法、除法、显示结果五个部分。 首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?,用户输入y/n执行继续计算和退出操作 三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等) 主程序流程:

代码 : 根据题目的要求,可以把整个源程序大致划分为几个基本结构,程序加法、减法、乘法、除法、显示结果五个部分 源程序: CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS NEXTLINE MACRO ;显示换行宏 MOV AH,2 MOV DL,10 开始 从键盘输入字符 AL=‘+’ AL=‘-’ AL=‘*’ AL=‘=’ AL=‘/’ 输出结果 结束 从键盘输入加数并执行加运算 从键盘输入加数并执行减运算 从键盘输入加数并执行乘运算 从键盘输入加数并执行除运算 Y Y Y Y Y N N N N

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

课程设计报告 一.课程设计的性质和目的 性质:《汇编语言》是计算机科学与技术专业及网络工程本科学生必修的专业课程。 目的要求: 进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 二.课程设计的要求 1.遵循模块化、结构化的程序设计方法。 2.要求程序必须正确。 3.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。 4.要求程序结构合理,语句使用得当。 5.适当追求编程技巧和程序运行效率。 三.主要仪器设备及软件 计算机、MASM汇编软件。 四.设计题目 四则运算: 从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止。 五.题目分析 根据题目的要求,可以把整个源程序大致划分为几个基本结构,程序加法、减法、乘法、除法、显示结果五个部分,首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?,用户输入y/n执行继续计算和退出操作

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

汇编语言课程设计报告 ( 2012 -- 2013 年度第1 学期) 实验名称:实现加减乘除四则运算的计算器 专业生物医学工程 学生姓名周炳威 班级B100904 学号B10090406 指导教师乐洋

实现加减乘除四则运算的计算器 1 实验目的 深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用 2 实验内容 课题名称:实现加减乘除四则运算的计算器 主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。 3 实现方法 本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 第一步,用INT 21H的1号功能调用来进行输入。利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。 第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。

四则运算练习题汇编

第一章四则运算练习题一、填空。(每空 1.5 分,共18 分) 1、在计算(200 —36M7)詔4时,先算(),再算(),最后算()法。 2、650 —320^80,如果要改变运算顺序,先算减法,那么必须使用括号,算式是()。 3、根据500-125=4,4+404=408,804 —408=396 组成一个综合算式是 ()。 4、5人4 小时做了80 朵纸花,平均每人4 小时做()朵纸花,平均每人每小时做()朵纸花。 5、在一个没有括号的等式里,如果只有加减法,或者只有乘除法,要按 ()的顺序计算,如果既有加减,又有乘除法,要先算(),后算()6、甲数是乙数的52 倍。 ( 1 )、如果乙数是364,那么甲数是()。 (2)、如果甲数是364,那么乙数是()。 二、判断,(8 分) 1、25X25吃5X25=1 () 2、比90 少2 的数的2 倍是176 () 3、21、26、13 的平均数是20 () 4、185 乘97 与53 的差,积是多少?列式是:185X97—53() 、用递等式计算下面各题(18 分) 3774-37X( 65+35 )540—(148+47 )-13 308—308-28)X11 10+120-24 )X5 238+7560- 90 )-14 21X(230—192-4) 四、列式计算,(9 分) 1 、725 加上475 的和除以25,商是多少? 2、1784 加上128 除以8再乘23,和是多少? 3、16乘以12 的积加上68,再除以4,得多少? 五、四年级爬杆比赛前 5 名的成绩如下表(9 分)( 1 )、右图每格代表()米。 (2)、用条形图表示每人的成绩。

四则运算实验

实验二四则运算实验 一实验目的 1.进一步熟悉CCS5000 2.0版本软件的使用; 2、掌握DSP汇编程序的编写; 3.熟悉和掌握软件初始化、断点设置、单步运行、MEMORY内容的查看、图表的使用、变量的查看以及快捷键的使用等。 二实验设备 计算机、CCS软件仿真平台 三实验内容 1、编写自定义的算术运算式子(需包括加法、减法、乘法等运算)的程序; 2、编写CMD汇编命令文件; 3、编译、连接、下载及运行程序; 4、熟悉CCS的操作 1)有两种方法可以增加一条断点: a)使用断点对话框选择命令Debug-Break Points将弹出断点对话框。 在“Break Point”栏中可以选择“无条件断点(Break at Location)”或“有条件断点(Break at Location if expression is TURE)”。在“Location”栏中填写需要中断的指令地址。用户可以观察反汇编窗口,确定指定所处地址。对C代码,由于一条C语句可能对应若干条汇编指令。难以用唯一地确定位置。为此用户可以采用“file Name line line number”的形式定位源程序中的一条C语句。例如“hello.C line 32”指明在hello.C程序从第32行处语句设置断点。断点类型和位置设置完成后,依次单击“Add”和“OK”按钮即可。断点设置成功后,该语句条用彩色光条显示,如果用户选择的是带条件断点,则“Expression”栏有效,输入表达式。当此表达式运算结果为真(ture=1)时,则程序在此断点位置暂停。否则继续执行下去。 b)采用工程工具条。 将光标移到需要设置断点的语句上,点击工程工具条上的按钮,则在该语句位置设置一断点,默认情况下为“无条件断点”。用户也可以使用断点对话框修改断点属性,例如将“无条件断点”改变为“有条件断点”。再次点击工程工具条上的按钮,则删除该语句的断点设置。点击工具条上的按钮,则删除程序中的所有的断点 2)单步运行 单步执行有四种类型,具体如下: a)单步进入(快捷键F8):选择Debug\Step Into或单击调试工具条上的按钮。当调试语句不是最基本的汇编指令时,此操作将进入语句内部(如子程序或软件中断)调试。 b)单步执行:选择Debug\Step Over或单击调试工具条上的按钮。此命令将函数或子程序当作一条语句执行,不进行其内部调试。 c)单步跳出(快捷键Shift+”):选择Debug\Step Out或单击调试工具条上的按钮。

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

汇编语言课程设计报告( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业计算机科学与技术 学生姓名 班级 学号 指导教师 完成日期

目录 目录 (1) 1概述 0 设计目的 0 设计内容 0 2系统需求分析 0 系统目标 0 主体功能 (1) 开发环境 (1) 3 系统概要设计 (1) 系统的功能模块划分 (1) 系统流程图 (2) 4系统详细设计 (3) 5测试 (4) 测试方案 (4) 测试结果 (4) 6小结 (4) 参考文献 (6) 附录 (7) 附录源程序清单 (7)

实现加减乘除四则运算的计算器 1 概述 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。

数据结构实验四:四则运算表达式

HUNAN UNIVERSITY 课程实验报 告 题目:四则运算 学生姓名 学生学号 专业班级 指导老师李晓鸿 完成日期 2 0 1 5年12 月10日

一、需求分析 1.程序的功能 本程序要求首先输入一组数据进行四则运算,输入的数据是按照中缀表达式的结构输入的,完成初始化后,把中缀表达式用后缀表达式(逆波兰表达式)输出,同时输出计算结果。 2.输入的形式 输入一个平时所用的正常的四则运算表达式(不需要特别注意输入式子是否正确),输入的数字的范围是(0至2^16)的小数或者整数,输入的符号限于(+-*/^) 3.输出的形式 程序的输出就是转化后的后缀表达式以及计算的结果,输出结果间用空格隔开; 4.测试数据 ①正常的输入 输入 21+23*(12-6) 输出 后续表达式为21 23 12 6 - * + 计算结果为159 ②输入有两个符号的错误情况 输入 6*3++4*(14-8) 输出 非括号运算符不能直接接非括号运算符

ERROR ③输入有小数的情况 输入 2.0*(11.2-5.3)+2.5 后续表达式为 2.0 11.2 5.3 - * 2.5 + 计算结果为14.3 ④有整数小数的情况 输入 2/(3.0+5)*3 输出 后续表达式为2 3.0 5 + / 3 * 计算结果为0.75 ⑤错误的输入 输入 2a+3 输出 a为非法字符 error 二、概要设计

1.抽象数据类型 本题目中,首先需要按顺序读取数字和操作符,将它们分别保存到两个数据结构中,如果最先保存的操作符优先级不大于接下来保存的操作符,将一直不被调用直到上一级操作符被调用,满足先进后出的数据结构,所以用栈来保存操作符。 对于保存的数字,每次调用操作符时,同时将最后保存的两位数字调用,满足先进后出的数据结构,所以用栈来保存数字。 由于需要用后缀表达式输出,按照进栈出栈的顺序,我们将符号作为节点,数字作为左右子树,依次相连成为一颗二叉树,通过后续遍历将二叉树输出。 2.算法的基本思想 ①.本题目在之后的操作中需要将数字和操作符进入不同的栈,所以我们在程序设计之前需要先设计函数判断读取的字符是数字还是操作符。 ②.本题中需要设计函数对操作符的优先级进行比较,即‘)’的优先级大于‘*’‘/’的优先级大于‘+’‘-’的优先级大于‘(’的优先级。 ③.对输入的式子进行顺序扫描,依次将数字和操作符依次进栈,当操作符进栈且前一个元素不为空时进行判断,将要进栈的操作符I 与上一个操作符进行优先级比较,上一个操作符优先级级别大于操作符I,则弹出上一个操作符,同时弹出两个操作数建立二叉树,操作符做根节点,将二叉树的的结点存进数字栈,操作符I进操作符栈;

汇编大作业(四则运算器含代码)

汇编程序大作业

云南大学软件学院实验报告 指导教师 (签名): 实验内容: 1.设计一个功能完善的四则运算器: ①程序有友好的运行界面; ②可以方便的输入输出2,10,16进制数据(要求可以处理4位的数据); ③可以方便的对数据进行四则运算; ④要求程序能够处理基本的错误信息; ⑤程序要求菜单控制; ⑥其他 程序简介: 该程序采用了主程序、子程序、宏相结合的编写方式,通过主程序调用了加、减、乘、除的子程序,在这四个子程序中有分别调用了二、十、十六进制输入输出、进制间转化的子程序。在数值转化为ASCII码的部分,定义了宏进行调整输出。 程序实现了16位的二进制、4位的十进制、4位的十六进制的加、减、乘、除运算,并可以通过用户的选择将其转化为其他相应的进制。其中乘法运算的进制转化功能尚不完善,当运算结果超过4位时不能正确的将结果进行输出并进行进制转化。 子过程: addition:加法部分 subtraction:减法部分 multiplication:乘法部分 division:除法部分 b_in:二进制输入 hd_in:十六进制、十进制输入 b_out:二进制输出 btod:二进制转化十进制并输出 both:二进制转化十六进制并输出 宏: btth:将数值转化为ASCII码保存 算法说明: 二进制计算时,要求输入0和1,从高到低为输入,将先输进的数*2+后输入的数,保存到寄存器中,如 1011则按((1*2+0)*2+1)*2+1 十进制计算时,要求输入0-9的整数,从高到低输入,将先输进的数*10+后输进的数,保存到寄存器中,如9817 则按((9*10+8)*10+1)*10+7 十进制计算时,要求输入0-F的整数,从高到低输入,将先输进的数*10H+后输进的数,保存到寄存器中,如AD17 则按((A*10H+D)*10H+1)*10H+7

实验五 整数四则混合运算计算器

实验五整数四则混合运算计算器 一、实验目的 掌握具有一定实用功能的汇编程序开发思路。 二、实验原理和内容 1、在数据段上开辟:1个叫OP的字数组,长度为10个字;1个叫OPERATOR 的字节数组,长度为10个字节;以及1个RESULT字数组,长度1个字。如下图: OP OPERATOR RESULT 共10 共10 个字个字节 2、在数据段定义一个字符串缓冲区。编写程序,输入字符串(该字符串有多个操作数和运算符,例如:12+34*56)到缓冲区中,然后从缓冲区把所有操作数转换为补码并分别保存到OP数组中,把所有运算符保存到OPERATOR中。 3、编写四则混合运算程序,结果以补码方式存放在RESULT上。并在屏幕上输出结果。 三、实验器材: Windous 7系统下的Masm 2009汇编软件 四、实验步骤: 1、先画框图(如下)

输入字符 是“=”小于28H 大于39H 小于30H 输入结束 是 否是 是 是否否否 是符号,执 行相应处理 是数值,执行相应处理 输入是数值 结果作为新的原值保存 减30H 与原值的10倍相加输入是符号 是“(”是“)”否配对标志加1 配对标志减1是 是 保存符号 否输入结束 配对标志为0出错,退出 进行计算 是否 1212*34+56 3456*+数值存储符号存储(a) 1212*(34+56-8) 3456*(数值存储符号存储(b)8+-) 1212*21-((34+56-8)+1) 2134*(数值存储符号存储(c) 56+-)81-( +)21优先级 2优先级 33 2优先级 55 1 3 2、 编写程序: ;----------------------------------------------------------------------------- ;----------------------------数据定义----------------------------------------- DSEG SEGMENT SIGN1 DW 0 ;判断数字是否输入完毕 SIGN2 DW 0 ;判断括号是否配对 NUMB DW 20H DUP (0) ;保存输入的数值 MARK DB 'A' ;保存输入的运算符 DB 10H DUP (0) ; ERROR DB ' YOUR INPUT ARE WRONG$' DSEG ENDS

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

微机原理实验报告 汇编语言课程设计报告 ( 2012 -- 2013 年度第1 学期) 实验名称:实现加减乘除四则运算的计算器 专业生物医学工程 学生姓名周炳威 班级B100904 学号B10090406 指导教师乐洋

实现加减乘除四则运算的计算器 1 实验目的 深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用 2 实验内容 课题名称:实现加减乘除四则运算的计算器 主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。 3 实现方法 本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 第一步,用INT 21H的1号功能调用来进行输入。利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。 第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。 2

汇编语言实现四则混合运算

;本程序实现加减混合运算输入格式必须为1+2-3= ;程序思路:遇到一个操作符执行前一次运算,等号执行最后一次运算,然后保存本次操作符 ;---------提示信息------ DISPL MACRO DI MOV AH,9 MOV DX,DI INT 21H ENDM ;----------- DISP MACRO V AR MOV AH,2 MOV DL,V AR INT 21H ENDM ;--------输入函数------- INPUT MACRO PUSH AX PUSH BX PUSH CX PUSH DX MOV BX,0 ;BX存放十进制数 CLC MOV DX,0 NEXT0: MOV AH,1 INT 21H CMP AL,2BH ;判断输入是否为'+' JE NEXT2 CMP AL,2DH ;判断输入是否为'-' JE NEXT2 CMP AL,3DH ;判断‘=’ JE NEXT2 SUB AL,30H JL NEXT1 CMP AL,9 JG NEXT1 MOV AH,0 ;将输入的数转换成10进制数 XCHG AX,BX MOV CX,10 MUL CX ADD AX,BX

JC NEXT1 XCHG AX,BX JMP NEXT0 NEXT1: MOV DX,0 MOV BX,0 MOV DI,OFFSET STR ;提示出错 DISPL DI MOV DI,OFFSET STR2 DISPL DI JMP NEXT0 NEXT2: CMP DX,0 JNZ NEXT1 CMP COUNT,1 ;第一次输入存到buf0以后输入全部存放到buf1 JE L0 MOV BUF0,BX JMP L1 L0: MOV BUF1,BX JMP NEXT3 L1: MOV OPER,AL ;将操作符保存至oper MOV COUNT,1 MOV BX,0 JMP NEXT0 NEXT3: CMP OPER,'+';判读那是何种操作 JE N0 CMP OPER,'-' JE N1 N0: MOV BX,BUF0 ;加法相应操作 ADD BX,BUF1 MOV BUF0,BX CMP AL,'=' JE NEXT4 JMP L1 N1: MOV DX,BUF0 ;加法操作 CMP FLAG,1 ;如果原来buf0里的数是负数用buf1-buf0的绝对值 JNE N2 XCHG DX,BUF1 MOV FLAG,0 N2: CLC

汇编语言实现四则混合运算

; 本程序实现加减混合运算输入格式必须为1+2-3= ; 程序思路:遇到一个操作符执行前一次运算,等号执行最后一次运算,然后保存本次操作符 ; ------- 提示信息 DISPL MACRO DI MOVAH,9 MOVDX,DI INT 21H ENDM DISP MACRO VAR MOVAH,2 MOVDL,VAR INT 21H ENDM ; ------- 输入函数------ INPUT MACRO PUSHAX PUSHBX PUSHCX PUSHDX MO\BX,0 ;BX存放十进制数 CLC MOVDX,0 NEXT0: MOVAH,1

INT 21H CMPAL,2BH JE NEXT2 CMPAL,2DH JE NEXT2 CMPAL,3DH JE NEXT2 SUB AL,30H JL NEXT1 CMPAL,9 JG NEXT1 MOVAH,0 ; 将输入的数转换成 10进制数 XCHGAX,BX MOVCX,10 MULCX ADDAX,BX JC NEXT1 XCHGAX,BX JMP NEXT0 NEXT1: MOVDX,0 MOVBX,0 MOV DI, OFFSETSTR ; 提示出错 DISPL DI MOV DI, OFFSETSTR2 DISPL DI ; 判断输入是否为 '+' ; 判断输入是否为 '-' ; 判断‘ ='

JMP NEXT0 NEXT2: CMPDX,0 JNZ NEXT1 CMPCOUNT,1 JE L0 MOVBUF0,BX JMP L1 L0: MOV BUF1,BX JMP NEXT3 L1: MOV OPER,AL MOVCOUNT,1 MOV BX,0 JMP NEXT0 NEXT3: CMPOPER,'+' JE N0 CMPOPER,'-' JE N1 N0: MOVBX,BUF0 ADDBX,BUF1 MOVBUF0,BX CMPAL,'=' JE NEXT4 JMP L1 N1: ; 第一次输入存到buf0 以后输入全部存放到buf1 ; 将操作符保存至oper ; 判读那是何种操作 ; 加法相应操作

汇编语言加减乘除四则运算实现源代码.

汇编语言加减乘除四则运算实现源代码 汇编语言加减乘除四则运算实现源代码 MOV BX,AX POP AX DIV CX PUSH DX MOV DX,BX OR BX,AX JNZ DOUT1DOUT2: POP AX ADD AL,'0' CMP AL,'9' JBE DOUT3 ADD AL,'A'-'9'-1DOUT3: CALL DISP DEC BP JNZ DOUT2 POP BP POP DX POP BX POP AX RET;输入数据在DX:AX中返回;CX=0 数据为10进制;CX#0 数据为16进制DATE LABEL NEAR PUSH BX PUSH BP PUSH DI XOR AX,AX XOR DX,DXDATE1: MOV DI,AX LODSB CMP AL,'0' JB DATE7 CMP AL,'9' JA SHL DI,1 RCL DX,1 SHL DI,1 RCL DX,1 JCXZ DATE3 SHL DI,1 RCL DX,1 Jmp short DATE4DATE3: ADD DI,BX ADC DX,BPDATE4: ADD AX,DI ADC DX,0 JMP DATE1DATE5: ADD AL,9 JMP DATE2DATE6: JCXZ DATE7 CMP AL,'A' JB DATE7 CMP AL,'F' JBE DATE5 CMP AL,'a' JB DATE7 CMP AL,'f' JBE DATE5DATE7: MOV AX,DI DEC SI OR DI,DX POP DI POP BP POP BX RET;数据1与数据2根据YSF1进行加减运算JSJJ LABEL NEAR MOV AX,NUM2 MOV DX,NUM2+2 CMP YSF1,'+' JZ JSJJ1 SUB NUM1,AX SBB NUM1+2,DX JMP SHORT JSJJ2JSJJ1: ADD NUM1,AX ADC NUM1+2,DX上一页[1] [2] [3] 下一页

人教版四年级下册四则混合运算练习题汇编

四则混合运算练习题 1、填一填。 (1)68-25+49的运算顺序是先算()法,再算()法。 (2)400÷20×36的运算顺序是先算()法,再算()法。 (3)在320-210÷7中,先算()法,再算()法。 (4)在280+27×8中,先算()法,再算()法。 (5)在197-12×5+38中,先算()法,再算()法,最后算()法。 2、口算。 36÷4×8=6×6÷9=42÷7×3=28+9-14=65-15+23=47+20-18=35÷5×9=7×6÷3=80-37+12=36÷4×8=6×6÷9=42÷7×3=28+9-14=65-15+23=47+20-18=35÷5×9=7×6÷3=80-37+12=3、计算下面各题。 514-80×2 205×6-150÷6 27+102×13 25×4+32×18

108-24×3+62 216+96÷3×3 (32-18)×96÷8 236+720÷(44+36)(240+36)÷(22-18)(375+125)÷(44+36)(273+562)÷5-96 (28+35)×(92÷4)120+480÷(43-28)33-18)×(24+34)3020-7344÷24 (126+54)×8+65 (960+420)÷(25-5)(137-87)×12÷15 514-80×2 205×6-150÷6 27+102×13 25×4+32×18 108-24×3+62 216+96÷3×3 (32-18)×96÷8 236+720÷(44+36)(240+36)÷(22-18)(375+125)÷(44+36)

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

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制11-2班 姓名: 倪天天 学号:2011025745 指导教师:郝维来 2013年6月28日

摘要 计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。 关键词:计算器,汇编语言,四则运算,功能模块

Abstract Calculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator. Keyword:Calculator, assembly language, four arithmetic, functional modules

相关文档
最新文档