汇编语言程序设计————计算器

合集下载

汇编语言程序设计————计算器

汇编语言程序设计————计算器

课程设计说明书题目: 表达式计算器学号:班级: 计算机创新实验班姓名:廖福轩目录一.设计内容 (2)二.设计方案 (2)1、主程序模块、 (2)2、赋权值模块、 (2)3、加减乘除运算子程序模块、 (2)4、调用赋权宏子程序模块、 (2)5、回车换行宏模块、 (2)6、9号功能显示字符串宏模块、 (2)三.设计框图 (3)四.程序代码 (4)五.运行结果 (9)六.设计总结 (9)计算器汇编语言程序设计一.设计内容从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能就是三位或四位十进制),+-*/位置任意。

并要求程序能反复执行直道对“还要继续不?(y/n)”之类的提示回答“n”或“N”为止。

四则运算主要包括以下几个模块:(1)主程序模块、(2)赋权宏模块、(3)加减乘除运算子程序模块、(4)调用赋权宏子程序模块、(5)回车换行宏模块、(6)9号功能显示字符串宏模块、二.设计方案1、主程序模块、主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果,判断就是否继续,继续则返回输入,不继续则退出程序、2、赋权宏模块、通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应、接着给对应的符号赋予权值,将其权值存入ch中、3、加减乘除运算子程序模块、运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号就是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号*则接着判断就是否为除号/,若为除号/则进行除法运算,然后判断就是否为加法,为加法则进行加法运算,接着判断就是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置、4、调用赋权宏子程序模块、该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为5,1,4,4,3,3,0、从而可以通过设定的权值来判断优先级、5、回车换行宏模块、通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能、6、9号功能显示字符串宏模块、通过定义宏show,用9号显示功能,通过变元str将字符串显示出来。

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

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

目录1 设计目的 (1)2 概要设计 (1)2.1 系统总体分析 (1)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (3)3.2.1 判定运算符模块设计 (3)3.2.2取运算数模块 (3)3.2.3计算模块 (4)3.2.4结果处理模块 (5)3.2.5输出模块 (5)3.2.6错误处理模块 (6)4 程序调试 (7)4.1 运行界面分析 (7)4.2 调试过程及分析 (7)5 心得体会 (8)5.1 设计体会 (8)5.2 系统改进 (8)参考文献 (10)附录 (11)实现加减乘除四则运算的计算器1 设计目的汇编语言是继机器语言后出现的计算机程序设计语言,是计算机所能提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特征并能够直接控制硬件的惟一语言。

因而了解之一语言的特性,并熟练掌握这一语言并应用于开发中便是计算机专业学生所必需掌握的技能之一。

本课程设计通过加减乘除四则运算计算器的设计,增强对于汇编语言寄存器、指令、伪指令、中断等的理解。

可通过编写的汇编程序完成基本的加减乘除四则运算。

主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:C:\tasm>js 3+252 概要设计2.1 系统总体分析四则运算计算器应当实现对用户输入表达式的处理。

根据用户输入的表达式,完成加减乘除四则运算。

程序自动判定表达式输入,并完成对于输入的16进制数的转换,同时计算结果并以10进制数输出。

对于异常情况程序应当进行处理,保证程序的正确运行。

设计一个计算器,在DOS界面下输入<程序名> <表达式>可直接输出运算结果。

例如在DOS界面中输入JS 3+6,可直接输出9。

程序接受16进制数输入,以十进制数输出运算结果。

对于输出错误情况,程序自动给出错误提示,若输入的格式有误,程序给出“JS <Expression> [10]”(即输入样例)提示,若输入的表达式有误,程序给出“Error in expression !”(即表达式错误)提示。

汇编语言课程设计四则运算计算器..【范本模板】

汇编语言课程设计四则运算计算器..【范本模板】

微机原理实验报告汇编语言课程设计报告( 2012 —- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。

通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

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

3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。

由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。

此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。

第一步,用INT 21H的1号功能调用来进行输入.利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。

我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了.在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错.第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+'号、‘—'号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。

汇编语言课程设计--简单计算器设计

汇编语言课程设计--简单计算器设计

《微机原理与应用》课程设计实验题目:简单计算器设计年级:2010级专业:电子信息工程组员:梁玮堃 21005108田少飞 21005116刘明 21005127陈晓琳 21005145指导教师:邓亚玲2013年01月组员分工组长梁玮堃:报告设计。

具体负责对设计报告版面设计、修改,流程图的设计,调试程序和应用程序的设计。

组员田少飞:程序调试。

负责计算器具体程序设计,编写主程序。

刘明:程序修改。

对已调程序进行修改,并设计相关功能程序。

陈晓琳:查阅资料。

通过上网或在图书馆查阅有关汇编语言及计算器设计资料。

目录1设计目的 (1)2概要设计 (2)2.1系统总体分析 (2)2.2程序流程图及说明 (3)3详细设计 (5)3.1主模块及子模块说明 (5)3.2各模块详细设计 (10)4程序调试 (13)4.1调试过程及分析 (13)4.2运行界面分析 (13)5心得体会 (17)5.1设计体会 (17)5.2系统改进 (17)参考文献 (18)1设计目的汇编语言是计算机能够提供给用户使用的最快而又最有效的语言。

同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。

至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。

由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。

用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。

本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

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

通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。

汇编小项目

汇编小项目

汇编小项目标题:汇编小项目——编写一个简单的计算器引言:在计算机科学领域,汇编语言是一种底层的机器语言,它使用符号化的指令来控制计算机的操作。

本文将介绍如何使用汇编语言编写一个简单的计算器,以加深对汇编语言的理解。

1. 汇编语言的概述汇编语言是一种与机器语言直接对应的低级语言,它使用助记符来表示机器指令。

与高级语言相比,汇编语言更接近计算机硬件的实现细节。

通过编写汇编语言程序,我们可以直接控制计算机的各个部件。

2. 计算器的设计思路我们将设计一个简单的计算器,可以进行加法和减法运算。

该计算器可以接受用户输入的两个数字,并输出运算结果。

3. 程序实现步骤3.1 初始化程序我们需要初始化程序的数据段和堆栈段。

数据段用于存储程序中使用的常量和变量,而堆栈段用于存储程序执行过程中的局部变量和返回地址。

3.2 获取用户输入程序需要提示用户输入两个数字,并将其存储到指定的内存位置。

用户输入的数字可以通过调用操作系统提供的输入函数来实现。

3.3 进行运算接下来,我们需要编写代码来实现加法和减法运算。

可以使用汇编语言提供的加法和减法指令来完成运算操作,并将结果存储到指定的内存位置。

3.4 输出结果我们需要将运算结果输出给用户。

可以通过调用操作系统提供的输出函数来实现。

4. 示例代码以下是一个简单的汇编语言程序示例,用于实现加法和减法运算:```section .datanum1 db 0num2 db 0result db 0section .textglobal _start_start:; 获取用户输入; ...; 进行加法运算; ...; 进行减法运算; ...; 输出结果; ...; 程序结束mov eax, 1xor ebx, ebxint 0x80```5. 总结通过编写一个简单的计算器程序,我们可以更好地理解汇编语言的基本概念和操作。

汇编语言虽然复杂,但它是计算机科学中不可或缺的一部分。

希望本文对读者对汇编语言的学习和掌握提供一些帮助。

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

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

*******************实践教学*******************兰州理工大学技术工程学院2013年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号: 11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级: 11计算机科学与技术1班学生姓名:郭利强学号: 11730108 题目类型:软件工程(R)指导教师:刘树群一.题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。

通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

得到软件工程的综合训练,提高解决实际问题的能力。

二.设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。

三.主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。

2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。

在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。

最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。

3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。

4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。

静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。

汇编语言简单计算器程序课程设计报告

汇编语言简单计算器程序课程设计报告

汇编语言课程设计报告( 2010 -- 2011 年度第 2 学期)课题名称: 实现加减乘除四则运算的计算器专业 计算机科学与技术学生姓名 汤浩军班级 B 计算机091学号 0910704117指导教师 王 志 宏完成日期2011年6月24日目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4.程序调试 (6)4.1 运行界面分析 (6)4.2 算法的分析 (6)4.3 调试过程及分析 (6)5小结 (7)5.1 设计总结 (7)参考文献 (8)源程序清单 (9)1设计目的通过本次的课程设计,加深对汇编语言的了解,应用《汇编语言程序设计教程》等所学相关知识及查阅资料,完成加减乘除计算器的设计,以达到理论与实践更好的结合,进一步提高自身的水平和对汇编语言的认识。

2概要设计2.1 系统总体分析本次设计的加减乘除四则运算的计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。

由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计的这个计算器可以一次运行,多次使用。

2.2 主模块框图及说明本程序的功能结构图如图2-1:图 2-1功能结构图程序流程图如图2-2:图2-2流程图3 详细设计3.1 主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。

子模块:主要完成对数据的加工,处理。

3.2 各模块详细设计主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。

如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。

整个过程按“ESC”结束。

流程图如下图3-1:图3-1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。

首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:Y图3-2 子模块流程图4.程序调试4.1 运行界面分析运行界面如图4-1图4-1 运行界面在NUM1这一行会提示输入第一个数据,NUM2这一行提示输入第二个数据,输入完成两个数据后程序会提示允许输入运算符,输入无误后在RESULT行显示结果。

汇编语言程序设计————计算器

汇编语言程序设计————计算器

目录一.设计内容 (2)二.设计方案 (2)1.主程序模块. (2)2.赋权值模块. (2)3.加减乘除运算子程序模块. (2)4.调用赋权宏子程序模块. (2)5.回车换行宏模块. (2)6.9号功能显示字符串宏模块. (2)三.设计框图 (3)四.程序代码 (4)五.运行结果 (9)六.设计总结 (9)计算器汇编语言程序设计一.设计内容从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。

并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止。

四则运算主要包括以下几个模块:(1)主程序模块.(2)赋权宏模块.(3)加减乘除运算子程序模块.(4)调用赋权宏子程序模块.(5)回车换行宏模块.(6)9号功能显示字符串宏模块.二.设计方案1.主程序模块.主程序初始化数据段,调用显示宏show显示界面,输入字符或数字并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级,调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算结果,判断是否继续,继续则返回输入,不继续则退出程序.2.赋权宏模块.通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使变元a与标号s对应.接着给对应的符号赋予权值,将其权值存入ch中.3.加减乘除运算子程序模块.运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的符号是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相乘,并把结果存入该位置,类似的若不为乘号*则接着判断是否为除号/,若为除号/则进行除法运算,然后判断是否为加法,为加法则进行加法运算,接着判断是否为减法,为减法则进行减法运算并将结果存入当前的计算的第二个数的位置.4.调用赋权宏子程序模块.该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级.5.回车换行宏模块.通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将0ah赋予dl输出,从而实现回车换行功能.6.9号功能显示字符串宏模块.通过定义宏show,用9号显示功能,通过变元str将字符串显示出来。

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

CODES ENDS
END START
五.运行结果
六.设计总结
本次设计让我学到了很多关于汇编的知识,首先,本次设计是以四 则运算为主题,通过在课堂上学习的基本知识和基本方法以及平时积累 的知识和方法来实现对带符号数的加减乘除运算,在设计过程中,对我 已有的知识进行了巩固,对我之前不太了解的知识有了一定的了解,通 过亲身去编写程序,使得自己的实际动手能力得以增强。其次,通过本 次设计,使我对模块化,结构化的程序设计方法掌握的更加透彻,再 者,就是对于宏的定义,调用以及子程序的定义,调用的方法掌握的更
目录
一.设计内容 2 二.设计方案 2
1.主程序模块. 2 2.赋权值模块. 2 3.加减乘除运算子程序模块. 2 4.调用赋权宏子程序模块. 2 5.回车换行宏模块. 2 6.9号功能显示字符串宏模块. 2 三.设计框图 3 四.程序代码 4 五.运行结果 9 六.设计总结 9
计算器汇编语言程序设计
SUB AL,30H
MOV AH,0
XCHG AX,[DI]
MUL BX
MOV BX,10
XCHG AX,[DI]
ADD [DI],AX
JMP INPUT
CALL FUN
RET
MAIN ENDP
FUN
PROC
NEAR;***********************************************************
2.赋权宏模块.
通过定义宏fq,定义了变元a,b进行参数传递,并使用替换运算符&使 变元a与标号s对应.接着给对应的符号赋予权值,将其权值存入ch中.
3.加减乘除运算子程序模块.
运算模块实现了将ax入栈保存,然后将ax,bx赋值为0,判断cl中的 符号是否为乘号*,若为乘号*则将number中的数字与其下一位的数字相 乘,并把结果存入该位置,类似的若不为乘号*则接着判断是否为除号/, 若为除号/则进行除法运算,然后判断是否为加法,为加法则进行加法 运算,接着判断是否为减法,为减法则进行减法运算并将结果存入当前
12345
*$'
STR3 DB 13,10, '*
67890
*$'
STR4 DB 13,10, '*
+-*/=
*$'
STR5 DB
0AH,0DH,'*******************************************$'
STR6 DB 13,10, 'PLEASE INPUT A FORMULA: $'
LET0:
CMP WORD PTR SIGN2,0;判断配对标志位
JE LET1
;经过左括号和右括号抵消为0则
跳转 LET1:
LET2:
LET3: LET4: 权值
LET5: 计算
LET6:
JMP LET8
;否则跳转到BC显示输入错误
CMP WORD PTR SIGN1,0
JE LET2
ADD DI,2
DB 10 DUP(0) ;保存该运算符对应的权值
ERROR DB 'WRONG!$'
DATAS ENDS
SHOW MACRO STR
;宏定义,显示字符串
LEA DX,STR
MOV AH,9
INT 21H
ENDM
FQ MACRO ASCII,A,B ;宏定义,给运算符赋权值
CMP AL,ASCII
JNE S&A
通过这次设计,我在汇编语言方面收获了很多东西,具体而言,在 宏定义,宏调用和子程序定义,调用方面我学到了比以前更多的知识, 尤其是通过子程序调用宏这种嵌套模式可以简化许多复杂的程序,让程 序更加简洁易懂,此外,这次设计让我认识到了上课认真听讲的必要 性,老师在课堂上讲解的许多知识都很重要,在本次设计中就充分体现 了这一点,所以学好课堂老师讲解的知识是很有必要的。
(1) 主程序模块. (2) 赋权宏模块.
(3) 加减乘除运算子程序模块.
(4) 调用赋权宏子程序模块.
(5) 回车换行宏模块.
(6) 9号功能显示字符串宏模块.
二.设计方案
1.主程序模块.
主程序初始化数据段,调用显示宏show显示界面,输入字符或数字 并判断,调用子程序dyfq调用赋权宏fq为符号赋权,从而判断优先级, 调用加减乘除运算子程序ys对判断出的相应运算符进行运算,输出运算 结果,判断是否继续,继续则返回输入,不继续则退出程序.
DYFQ PROC
;子程序DYFQ调用宏FQ,判断优先级
FQ 28H,1,5
;调用宏FQ为(赋权值
S1:FQ 29H,2,1
;调用宏FQ为)赋权值
S2:FQ 2AH,3,4
;调用宏FQ为*赋权值
S3:FQ 2FH,4,4
;调用宏FQ为/赋权值
S4:FQ 2BH,5,3
;调用宏FQ为+赋权值
S5:FQ 2DH,6,3
加熟练。 本次设计是要实现对有符号数的加减乘除等四则运算,程序开始先
定义了显示界面的诸多字符串,经过显示界面,接下来,定义了判断数 字和判断运算符的存储区,通过这两个存储区来判断当前位置输入的是 数字还是运算符,然后,定义了保存数字和保存运算符的存储区,提示 错误的字符串,显示宏,赋权宏,回车换行宏等,通过主程序对各个宏 及子程序的调用,判断出输入的是数字还是运算符,若是运算符又是运 算符中的哪类运算符,然后,进行加减乘除运算,最后将运算结果存入 保存数字的存储区中,运用到显示输出模块将最后的运算结果显示出 来,从而实现了对带符号数的四则运算功能。
INT 21H
CMP AL,'='
JE LET0
CMP AL,28H
;第二种情况,第一次输入的与28H
也就是‘(’比较
JB INPUT
;小于28H=(则重新输入
CMP AL,39H
JA INPUT
;大于39H=9则重新输入
CMP AL,2FH
;判断是数字还是符号
JBE LET1
;是符号转入响应操作
INC WORD PTR SIGN1 ;是数字的话将数字标志位加1
MOV CH,B
JMP S7
ENDM
HCHH MACRO
;宏义,回车换行
MOV AH,2
MOV DL,0DH
INT 21H
MOV AH,2
MOV DL,0AH
INT 21H
ENDM
CODES SEGMENT
MAIN PROC FAR
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
PUSH AX
MOV AX,0
MOV BX,0
CMP CL,2AH
;乘法运算
JNE CHU
SUB DI,2
XCHG BX,[DI]
SUB DI,2
XCHG AX,[DI]
IMUL BX
MOV [DI],AX
ADD DI,2
JMP FINISH
CHU:
CMP CL,2FH
;除法运算
JNE JIA
SUB DI,2
STR7 DB 'CONTINUE(Y/N)?$'
SIGN1 DW 0
;值为0代表输入的不是数字,为1代
表输入的是数字
SIGN2 DW 0
;值为0代表输入的符号是匹配的,
为1输入的符号不匹配
NUMBER DW 20 DUP(0) ;保存输入的数值
OPERATOR DB '$'
;判断输入的运算符是否为空
XCHG BX,[DI]
SUB DI,2
XCHG AX,[DI]
CWD
IDIV BX
MOV [DI],AX
ADD DI,2
JMP FINISH
JIA:
CMP CL,2BH
;加法运算
JNE JIAN
SUB DI,2
XCHG BX,[DI]
SUB DI,2
ADD [DI],BX
ADD DI,2
JMP FINISH
6.9号功能显示字符串宏模块.
通过定义宏show,用9号显示功能,通过变元str将字符串显示出 来。
三.设计框图
开始
加载数据段附加段 显示界面
input输入数字或字符
输入的是=,数字,符号? SIGN1=0?
保存数字 显示错误 = 数字 符号 SIGN2=0? n y 下移2位将SIGN1赋0 设优先级,并判断是何符号 n y 根据符号决定运算,将值存入numb
的计算的第二个数的位置.
4.调用赋权宏子程序模块.
该模块实现了调用赋权宏fq为(,),*,/,+,-,=等符号分别赋权值为 5,1,4,4,3,3,0.从而可以通过设定的权值来判断优先级.
5.回车换行宏模块.
通过2号功能的输出功能,将0dh赋予dl输出,再调用2号功能,将 0ah赋予dl输出,从而实现回车换行功能.
JNE LET7
MOV CH,2
;改变(的权值
LET7:
MOV [SI],CH
;紧跟着保存符号的权值
JMP INPUT
LET8:
LEA DX,ERROR
MOV AH,9
INT 21H
JMP EXIT
RET
FUN
ENDP;********************************************************************
;调用宏FQ为-赋权值
S6:FQ 3DH,7,0
;调用宏FQ为=赋权值
相关文档
最新文档