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

合集下载

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

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

课程设计说明书题目: 表达式计算器学号:班级: 计算机创新实验班姓名:廖福轩目录一.设计内容 (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将字符串显示出来。

汇编语言简单计算器程序实验报告

汇编语言简单计算器程序实验报告

课程设计说明书题目: 简单计算器院系:专业班级:学号:学生姓名:指导教师:2010年12月31日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年12月17 日安徽理工大学课程设计(论文)成绩评定表摘要本次课程设计的题目是用汇编语言实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

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

想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。

用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。

通过对各种指令的合理使用,设计各个功能模块。

当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。

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

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

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

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

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

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

8086汇编语言实现简易计算器

8086汇编语言实现简易计算器

8086汇编语⾔实现简易计算器8086汇编语⾔实现简易计算器本周看了⼀个很有意思的知识。

C语⾔的编译器最初是怎么来的?最初应该是由汇编语⾔实现⼀个简化版C语⾔,然后使⽤简化版的C语⾔进⾏多次迭代,功能更新,从⽽出现了如今强⼤的C语⾔。

本⼈找到了⼀个古⽼的课程设计,当时学汇编时候的⼀个⼩demo分享出来。

1.概述为了更深⼊地理解计算机⼯作原理以及CPU的功能和结构,掌握汇编语⾔的使⽤。

本⽂以简易计算器程序的汇编语⾔实现为主要任务,进⾏对程序的⼀些算法和汇编语⾔语法的论述。

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

想要⽤汇编语⾔实现简单的计算器,就必须通过对数据存储,寄存器的使⽤,加减乘除相关指令以及模块的调⽤等汇编语⾔知识进⾏运⽤,以实现⼀个基本功能完善,界⾯友好,操作简便易⾏的计算器。

⽤汇编语⾔实现简单计算器还涉及到输⼊输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。

通过对各种指令的合理使⽤,设计各个功能模块。

当实现各个程序模块后,通过程序的调⽤最终实现⼀个简单的计算器。

本⽂以⽤8086汇编语⾔实现简易计算器为⽬标,对程序的算法以及结构进⾏分析和解释。

汇编语⾔的语句类型有指令语句、伪指令语句和宏指令语句。

在实现简易计算器的过程中暂不需要宏指令语句,故对此语句不进⾏介绍。

计算器的实现需要使⽤输⼊输出,DOS系统的01H,02H,09H号调⽤可以完成所需功能。

由于简易计算器对结果没有很⾼的范围要求,故对四则运算只需考虑ADD,SUB,MUL,DIV等指令。

在计算器中,输⼊的是10进制数字,⽽在汇编语⾔中读⼊字符只能⼀位⼀位的读取,故需要使⽤MUL设置⼀个循环算法,将输⼊的数字以16进制形式放⼊寄存器中,⽽输出则是使⽤MOD设置⼀个循环算法,将16进制转化为10进制后处理为ASCII码进⾏输出。

2.程序算法结构简易计算器程序的任务主要有处理输⼊数据,选择运算⽅式进⾏计算,显⽰算式结果。

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

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

目录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年 12月 31日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年12月17 日安徽理工大学课程设计(论文)成绩评定表摘要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。

汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。

高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。

在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。

现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。

汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。

本次设计的简单计算器支持简单的四则运算。

关键词:汇编语言,简单计算器,高效,硬件AbstractAssembly language is a powerful programming language features, but also all the hardware features of computer and can directly control the hardware of the language. Assembly language, as a language, corresponding to high-level language compiler, you need a "assembler" to the assembly language source file compiled into machine executable code. Advanced assembler such as MASM, TASM assembler, and so for us to write high-level language offers many similar features, such as structured, abstract and so on. In such an environment prepared by the assembler, a large part of the directive for the assembler has been similar in the high-level language. Now the compilation environment has such a high, even if all windows in assembly language to write applications that are feasible, but this is not assembly language strengths. The strength lies in assembly language to write efficient hardware and requires precise control of the machine process. This simple calculator designed to support simple arithmetic.Keywords:assembly language, simple calculator, efficient, hardware目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4.程序调试 (12)4.1 运行界面分析 (12)4.2 算法的分析 (12)4.3 调试过程及分析 (12)5心得体会 (13)5.1 设计体会 (13)5.2 系统改进 (13)参考文献 (14)安徽理工大学课程设计(论文)1设计目的通过本次的课程设计,使自己加深对汇编语言的了解,应用《汇编语言程序设计》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能里的目的。

汇编语言简易计算器

汇编语言简易计算器

目录1.设计目的..................................................... 2.总体设计.....................................................2.1 系统总体分析......................................................2.2 主模块框图及说明.................................................. 3.详细设计.....................................................3.1 主模块及子模块说明................................................3.2 各模块详细设计.................................................... 4.程序调试.....................................................4.1 运行界面分析......................................................4.2 算法的分析........................................................4.3 调试过程及分析.................................................... 5.心得体会.....................................................5.1 设计体会..........................................................5.2 系统改进.......................................................... .参考文献.......................................................致谢摘要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。

8086汇编语言实现简易计算器

8086汇编语言实现简易计算器

8086汇编语⾔实现简易计算器8086汇编语⾔实现简易计算器本周看了⼀个很有意思的知识。

C语⾔的编译器最初是怎么来的?最初应该是由汇编语⾔实现⼀个简化版C语⾔,然后使⽤简化版的C语⾔进⾏多次迭代,功能更新,从⽽出现了如今强⼤的C语⾔。

本⼈找到了⼀个古⽼的课程设计,当时学汇编时候的⼀个⼩demo分享出来。

1.概述为了更深⼊地理解计算机⼯作原理以及CPU的功能和结构,掌握汇编语⾔的使⽤。

本⽂以简易计算器程序的汇编语⾔实现为主要任务,进⾏对程序的⼀些算法和汇编语⾔语法的论述。

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

想要⽤汇编语⾔实现简单的计算器,就必须通过对数据存储,寄存器的使⽤,加减乘除相关指令以及模块的调⽤等汇编语⾔知识进⾏运⽤,以实现⼀个基本功能完善,界⾯友好,操作简便易⾏的计算器。

⽤汇编语⾔实现简单计算器还涉及到输⼊输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。

通过对各种指令的合理使⽤,设计各个功能模块。

当实现各个程序模块后,通过程序的调⽤最终实现⼀个简单的计算器。

本⽂以⽤8086汇编语⾔实现简易计算器为⽬标,对程序的算法以及结构进⾏分析和解释。

汇编语⾔的语句类型有指令语句、伪指令语句和宏指令语句。

在实现简易计算器的过程中暂不需要宏指令语句,故对此语句不进⾏介绍。

计算器的实现需要使⽤输⼊输出,DOS系统的01H,02H,09H号调⽤可以完成所需功能。

由于简易计算器对结果没有很⾼的范围要求,故对四则运算只需考虑ADD,SUB,MUL,DIV等指令。

在计算器中,输⼊的是10进制数字,⽽在汇编语⾔中读⼊字符只能⼀位⼀位的读取,故需要使⽤MUL设置⼀个循环算法,将输⼊的数字以16进制形式放⼊寄存器中,⽽输出则是使⽤MOD设置⼀个循环算法,将16进制转化为10进制后处理为ASCII码进⾏输出。

2.程序算法结构简易计算器程序的任务主要有处理输⼊数据,选择运算⽅式进⾏计算,显⽰算式结果。

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

课程设计说明书题目 :表达式计算器学号:班级 : 计算机创新实验班姓名:廖福轩目录一.设计内容 2二.设计方案错误!未定义书签。

1.主程序模块 .错误!未定义书签。

2.赋权值模块 .错误!未定义书签。

3.加减乘除运算子程序模块.错误!未定义书签。

4.调用赋权宏子程序模块.错误!未定义书签。

5.回车换行宏模块 .错误!未定义书签。

号功能显示字符串宏模块. 2三.设计框图 3四.程序代码 4五.运行结果错误!未定义书签。

六.设计总结错误!未定义书签。

计算器汇编语言程序设计一.设计内容从键盘输入一个十进制两位数的四则运算表达式,如23*56 -( 8*19 ) /6 + 67 - 8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/ 位置任意。

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

四则运算主要包括以下几个模块:主程序模块 .赋权宏模块 .加减乘除运算子程序模块.调用赋权宏子程序模块.回车换行宏模块.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 输出,从而实现回车换行功能 .号功能显示字符串宏模块.通过定义宏show ,用 9 号显示功能,通过变元str 将字符串显示出来。

三.设计框图开始加载数据段附加段显示界面input 输入数字或字符= 输入的是=,数字,符号符号数字保存数字SIGN1=0 ny 下移 2 位将设优先级,并判SIGN1赋 0断是何符号取 number,operator的偏移地址根据符号决定运算,将值存入numbOutput 通过 2 号Di+2功能显示结果y是否继续n结束四.程序代码DATAS SEGMENTSTR1DB 0AH,0DH,'*******************************************$' SIGN2=0n显示错误ySTR2 DB 13,10, '* 1 2 3 4 5 *$'STR3 DB 13,10, '* 6 7 8 9 0 *$'STR4 DB 13,10, '* + - * / = *$'STR5 DB 0AH,0DH,'*******************************************$'STR6 DB 13,10, 'PLEASE INPUT A FORMULA: $'STR7 DB 'CONTINUE(Y/N)$'SIGN1 DW 0;值为 0 代表输入的不是数字,为 1 代表输入的是数字SIGN2 DW 0;值为 0 代表输入的符号是匹配的,为 1 输入的符号不匹配NUMBER DW 20 DUP(0) ;保存输入的数值OPERATOR DB '$';判断输入的运算符是否为空DB 10 DUP(0);保存该运算符对应的权值ERROR DB 'WRONG!$'DATAS ENDSSHOW MACRO STR;宏定义 ,显示字符串LEA DX,STRMOV AH,9INT 21HENDMFQ MACRO ASCII,A,B;宏定义 ,给运算符赋权值CMP AL,ASCIIJNE S&AMOV CH,BJMP S7ENDMHCHH MACRO;宏定义 ,回车换行M OV AH,2M OV DL,0DHINT 21HM OV AH,2M OV DL,0AHINT 21HENDMCODES SEGMENTMAIN PROC FARASSUME CS:CODES,DS:DATASSTART:M OV AX,DATASM OV DS,AXLEA DI,NUMBERLEA SI,OPERATORSHOW STR1SHOW STR2SHOW STR3SHOW STR4SHOW STR5SHOW STR6M OV AX,0M OV BX,0M OV CX,0M OV DX,0START1:HCHHINPUT:MOV AH,1INT 21HCMP AL,'='JE LET0CMP AL,28H ;第二种情况,第一次输入的与28H 也就是‘(’比较JB INPUT ; 小于28H=( 则重新输入CMP AL,39HJA INPUT CMP AL,2FHJBE LET1 ;大于 39H=9 则重新输入;判断是数字还是符号;是符号转入响应操作INC WORD PTR SIGN1 ; 是数字的话将数字标志位加 1SUB AL,30HMOV AH,0XCHG AX,[DI]MUL BXM OV BX,10XCHG AX,[DI]ADD [DI],AXJMP INPUTCALL FUNRETMAIN ENDPFUN PROC NEAR;***********************************************************LET0:CMP WORD PTR SIGN2,0;判断配对标志位JE LET1;经过左括号和右括号抵消为JMP LET8;否则跳转到BC 显示输入错误LET1:CMP WORD PTR SIGN1,0JE LET2ADD DI,2;M OV WORD PTR SIGN1,0 将;数字标志位复0LET2:CALL DYFQ;设定优先级CMP CH,5;判断输入的符号是否是左括号0 则跳转JNE LET3;不是则判断输入的是否是右括号INC WORD PTR SIGN2 ;是左括号,括号标志位加 1LET3:CMP CH,1;判断输入的是否是右括号JNE LET4DEC WORD PTR SIGN2 ;是右括号,括号标志位减 1LET4:CMP BYTE PTR[SI],'$';判断运算符存储区是否为空JE LET6CMP CH,[SI];[SI]的内容为前一个符号或其权值JA LET6CMP BYTE PTR[SI],'('JNE LET5DEC SIJMP INPUTLET5:DEC SIM OV CL,[SI]CALL YS;判断是什么运算符并进行相应的计算JMP LET4LET6:CMP CH,0;判断是否是等号JE OUTPUTCMP CH,1JE INPUT;“ )”不保存,输入下一个数INC SIM OV [SI],AL; 保存符号INC SICMP CH,5;判断是否是左括号JNE LET7M OV CH,2;改变 (的权值LET7:M OV [SI],CH;紧跟着保存符号的权值JMP INPUTLET8:LEA DX,ERRORM OV AH,9INT 21HJMP EXITRETFUN ENDP;********************************************************************** DYFQ PROC ;子程序DYFQ调用FQ,判断优先级宏FQ 28H,1,5 ;调用宏FQ 为 (赋权值S1:FQ 29H,2,1 ;调用宏FQ 为)赋权值S2:FQ 2AH,3,4 S3:FQ 2FH,4,4 ;调用宏;调用宏FQ为*赋权值FQ 为 /赋权值S4:FQ 2BH,5,3 ;调用宏FQ 为 +赋权值S5:FQ 2DH,6,3 S6:FQ 3DH,7,0 ;调用宏;调用宏FQ 为 -赋权值FQ 为 =赋权值S7:RETDYFQ ENDP;********************************************* OUTPUT: ; 输出运算结果K1: K2:K3: K4: SUB DI,2CMP WORD PTR[DI],0JGE K1NEG WORD PTR[DI]M OV DL,'-'M OV AH,2INT 21HMOV BX,10000M OV CX,5M OV SI,0MOV AX,[DI]CWDDIV BXM OV [DI],DXCMP AL,0JNE K3CMP SI,0JNE K3CMP CX,1JE K3JMP K4MOV DL,ALADD DL,30HM OV AH,2INT 21HM OV SI,1MOV AX,BXM OV DX,0M OV BX,10;求负数的绝对值;实现将10000 变为1000,100,10DIV BXM OV BX,AXLOOP K2HCHHSHOW STR7M OV AH,1INT 21HCMP AL,'n';判断是否继续输入,输入n 则结束操作JE EXITCMP AL,'N'JE EXITM OV WORD PTR[DI+2],0LEA DI,NUMBERLEA SI,OPERATORJMP START1EXIT:M OV AH,4CHINT 21HYS PROC NEAR子;程序,进行相应的运算PUSH AXM OV AX,0M OV BX,0CMP CL,2AH;乘法运算JNE CHUSUB DI,2XCHG BX,[DI]SUB DI,2XCHG AX,[DI]IMUL BXM OV [DI],AXADD DI,2JMP FINISHCHU:CMP CL,2FH;除法运算JNE JIASUB DI,2XCHG BX,[DI]SUB DI,2XCHG AX,[DI]CWDIDIV BXM OV [DI],AXADD DI,2JMP FINISHJIA:CMP CL,2BH;加法运算JNE JIANSUB DI,2XCHG BX,[DI]SUB DI,2ADD [DI],BXADD DI,2JMP FINISHJIAN:CMP CL,2DH;减法运算JNE FINISHSUB DI,2XCHG BX,[DI]SUB DI,2SUB [DI],BXADD DI,2FINISH:POP AXRETYS ENDP;**************************************************************CODES ENDSEND START五.运行结果六.设计总结本次设计让我学到了很多关于汇编的知识,首先,本次设计是以四则运算为主题,通过在课堂上学习的基本知识和基本方法以及平时积累的知识和方法来实现对带符号数的加减乘除运算,在设计过程中,对我已有的知识进行了巩固,对我之前不太了解的知识有了一定的了解,通过亲身去编写程序,使得自己的实际动手能力得以增强。

相关文档
最新文档