收藏 分享(赏)

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

上传人:hyngb9260 文档编号:6544201 上传时间:2019-04-16 格式:DOC 页数:16 大小:91.50KB
下载 相关 举报
汇编语言课程设计 四则运算.doc_第1页
第1页 / 共16页
汇编语言课程设计 四则运算.doc_第2页
第2页 / 共16页
汇编语言课程设计 四则运算.doc_第3页
第3页 / 共16页
汇编语言课程设计 四则运算.doc_第4页
第4页 / 共16页
汇编语言课程设计 四则运算.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、1计算机与信息工程学院汇编语言课程设计四则运算器的设计专 业:计算机科学与技术班 级:控制 11-2 班姓 名: 倪天天学 号:2011025745指导教师:郝维来2013 年 6 月 28 日2设计题目:四则运算器的设计设计目的:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。本次课程设计以实现一个基本功能完善,界面友好,操作简便易行的计算器为最终目的。设计目标:通过对具有加

2、减乘除基本功能的计算器的设计实现,学会使用汇编语言实现输入输出模块的设计,模块合理调用的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,熟悉并加深对各种指令的用法。学会使用汇编语言设计各个功能模块。当实现各个程序模块后,学会通过程序的调用最终实现一个具有基本计算功能的简单计算器。任务下达时间:2013-6-17任务完成时间:2013-6-28指导教师评语:年 月 日设计成绩:3摘 要计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运

3、用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。关键词:计算器,汇编语言,四则运算,功能模块4AbstractCalculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic func

4、tions. 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 e

5、asy 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

6、various program modules, through a call to the ultimate realization of the program a simple calculator.Keyword: Calculator, assembly language, four arithmetic, functional modules5目录1.背景分析及意义 .62.总体设计思想 .63.完成的主要功能 .74.软硬件环境要求 .75.程序流程图 .76.使用说明 .9设计总结 9参考文献 10程序清单 1061.背景分析及意义汇编语言是计算机能够提供给用户使用的最快而又最

7、有效的语言。同时,汇编语言也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可。由于汇编语言如此地接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。用汇编语言编写的程序速度通常要比高级语言快几倍、几十倍、甚至成百上千倍,解释语言其程序速度更无法与汇编语言程序同日而语。2.总体设计思想本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两

8、个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。第一步,我要解决的是输入时是用 INT 21H 的 10 号功能调用还是用 INT 21H 的 1 号功能调用来进行输入。若是用 10 号功能调用则我们进行多字符输入,可以将输入的字符都存储到一个数据区里面,并调用 9

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

10、进行比较,和哪一个运算符号一样就调用相对应7的运算模块进行计算。第三步,根据计算器程序所要实现的功能完成各个功能模块。设计程序主体部分,根据主体部分所需的功能模块对各个子模块一一进行设计编写。子模块中包含有:do_add 加法运算模块,do_sub 减法运算模块,do_mul 乘法运算模块,do_div 除法运算模块,input 输入模块等。最后还要对这个简易计算器进行功能完善。为了使程序符合我们使用者的操作习惯,设计当用户根据提示信息输入一个算式后,按下 enter 键或是=符号键时,程序依据输入的算式进行计算,并将结果显示在屏幕上。如果用户输入错误,则返回,提示信息让用户重新输入算式,当用

11、户按下 Q 或 q 键时退出程序。在各个子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具有简单运算功能的计算器。3.完成的主要功能本次课程设计的题目是用汇编语言实现一个简单的计算器,运行程序,程序界面能显示出参与运算的运算式和运算结果,可以输入加减乘除四则运算,输入后按等于号或回车键输出运算结果。本次课程设计以实现一个基本功能完善,界面友好,操作简便易行的计算器为最终目的。4.软硬件环境要求X86 架构 PC 机,安装 windows 操作系统,系统运行 MASM5.0 或以上版本软件。5.程序流程图此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写

12、的程序的一个总体的框架。程序流程图说明:通过流程图,可以看出程序开始运行时,首先输出提示语句,当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调用哪个功能模块,首先要判断输入的字符是否为 Q 或 q,若是,则退出程序,不是则继续输入。还要判断输入的是否为 0-9, +, -, *, /这8些字符,若不是会报错,是则将根据运算符号调用相应的功能模块完成运算。最后将运算的结果显示在屏幕上,并返回主题程序,使用户可以重新输入。程序流程图如图 1 所示:9输入一个算式09+-*/?存储数据判断运算符号调用运算功能模块输入出错NYN输出提示语句Y按下 Enter 或=键显示结果 是否为

13、c?Y开始结束图 1106.使用说明运行程序,按提示输入你所需要的运算式,按“=”或“Enter”显示输出结果,按“C”继续运行计算器,按“E”退出。设计总结经过这次课程设计,我学到了很多东西,其中包括知识方面的,还有其他方面的。首先让我认识到,做好一件事,做成功一件事是不容易的,但是你只要坚持不懈的努力,不断的发挥自己的智慧去思索去探究,你会欣慰的发现自己正向着成功一步步迈进。这次课程设计使我对汇编语言程序设计这门课程有了进一步的理解和认识,使我学到了许多编程语言以及算法设计方面的知识,同时也锻炼了我的耐心和意志,增长了我的实践能力。这次课程设计我所选的题目是使用汇编语言设计一个具有加减乘除

14、基本运算功能的简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。通过使用汇编语言设计实现简单计算器,我进一步了解和掌握了对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用。本次课程设计以实现一个基本功能完善,界面友好,操作简便易行的计算器为最终目的,我通过对具有加减乘除基本功能的计算器的设计实现,学会了使用汇编语言实现输入输出模块的设计,模块合理调用的设计,加减乘除运算的判断以及退出程序的判断的设计。在汇编语言程序设计中,我通过对各种指令的合理使用,熟悉并加深了对各种指令的用法,同时也学会使用汇编语言设计各个功能模块。当我实现各个程序模

15、块后,学会了通过程序的调用最终实现一个具有基本计算功能的简单计算器。在本次课程设中,我遇到了很多问题。例如,在计完成具有输入功能的模块 input 模块时我就遇到了困难。通过一番努力后我发现利用 int 21H 中的 01 号功能调用可以较好的实现输入功能,原因是 Int 21H 的 01 号功能调用可以直接接收键入的字符,当有键按下时,首先检查是否是 ctrl+break,若是,则执行退出命令;否则将键值送入 AL 寄存器并回显。通过这次汇编语言程序课程设计,我学到了许多东西,同时也发现了一些不足之处,在以后的学习中我会逐步弥补这些不足。总而言之,此次课程设计使我受益匪浅。11参考文献1 李

16、敬兆.8086/8088 和基于 ARM 核汇编语言程序设计.合肥:中国科技大学出版社,20082 李敬兆.8086/8088 和基于 ARM 核汇编语言程序设计实验教程.合肥:中国科技大学出版社,20083 杨季文.80x86 汇编语言程序设计教程.北京:清华大学出版社,20044 周佩玲,彭虎,傅忠谦.微机原理与接口技术.北京:电子工业出版社,2005 程序清单data segmentx dd 0y dd 0z dd 0tmp dw 0ten dw 10op db 0message db 0DH,0AH,Please input the expression:,0DH,0AH,$ ;提示用

17、户输入算式。data endsassume cs:code, ds:datacode segmentstart:mov ax, datamov ds, axnx0:mov ah, 9lea dx, message ;DX 指向 message,提示输入算式。 12int 21h ;DOS 系统功能调用。call do_cal ;调用 do_cal。call show ;调用 show。jmp nx0 ;转移到 nx0。done:mov ax, 4c00h ;将 4C00H 送给 AX,即返回 DOS。int 21h ;DOS 系统功能调用。do_cal:call input ;调用 input

18、。fistp x ;将输入的数以十进制的形式存入 x 中。cmp al, q ;将 AL 和 q 进行比较,即判断 AL 是否为 q。jz done ;如果输入的是 q 则退出程序,返回 DOS。cmp al, Q ;将 AL 和 Q 进行比较,即判断 AL 是否为 Q。jz done ;如果输入的是 Q 则退出程序,返回 DOS。mov op, al ;将 AL 送给 OP。call input ;调用 input 子程序段。fistp y ;将输入的数以十进制的形式存入 y 中。cmp op, + ;判断 OP 是否为“+” 。jnz nx1 ;如果不是“+”且不为零,则跳转到 nx1。c

19、all do_add ;调用 do_add。jmp nx4 ;转移到 nx4。nx1: ;nx1 子程序段定义cmp op, - ;判断 OP 是否为“-” 。jnz nx2 ;如果不是“-” ,则跳转到 nx2。call do_sub ;调用 do_sub。jmp nx4 ;转移到 nx4。nx2: ;nx2 的定义。cmp op, * ;判断 OP 是否为“*” 。jnz nx3call do_mul ;调用 do_mul。jmp nx4nx3:cmp op, / ;判断 OP 是否为“/” 。jnz nx413call do_div ;调用 do_div。nx4:ret ;子程序返回。i

20、nput:finitfldznx10:mov ah, 1 ;01 号功能调用。int 21hsub al, 0cmp al, 0jl done1cmp al, 9jg done1fimul tenxor ah, ahmov tmp, axfiadd tmpjmp nx10done1:add al, 0ret ;子程序返回。设计完成加法运算功能的模块 do_add 模块源代码如下:do_add:fild xfiadd yfimul tenfimul tenfistp zret ;子程序返回。设计完成减法运算功能的模块 do_sub 模块源代码如下:do_sub:fild xfisub y14fi

21、mul tenfimul tenfistp zret ;子程序返回。设计完成乘法运算功能的模块 do_mul 模块源代码如下:do_mul:fild xfimul yfimul tenfimul tenfistp zret ;子程序返回。设计完成除法运算的功能模块源代码如下:do_div:fild xfimul tenfimul tenfidiv yfistp zret ;子程序返回。设计 init 模块源代码如下:init:finitfstcw tmpmov ax, tmpor ax, 0c00hmov tmp, axfldcw tmpret ;子程序返回。设计完成 show 模块为:sho

22、w:call crlfmov ah, 2mov dl, =15int 21hmov dx, word ptr z+2 cmp dx, 0jge posmov dl, -int 21hcall initfldzfld1fsubfild zfmul st(1), st(0)fistp zfistp z设计完成 pos 模块如下:pos:call initfild tenfimul tenfild zfpremfild zfsub st(0), st(1)fidiv tenfidiv tenfistp zfistp tmpmov ax, tmppush axcall initfild tenmov ax, word ptr zcmp ax, 0jnz nx816cmp ax, word ptr z+2jnz nx8mov ah, 2mov dl, 0int 21hjmp nx9设计完成 crlf 模块如下:crlf:mov ah, 2mov dl, 13int 21hmov dl, 10int 21hret ;子程序返回。code endsend start

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报