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

上传人:龙*** 文档编号:59619295 上传时间:2018-11-09 格式:DOC 页数:17 大小:90KB
返回 下载 相关 举报
汇编语言课程设计四则运算计算器概要_第1页
第1页 / 共17页
汇编语言课程设计四则运算计算器概要_第2页
第2页 / 共17页
汇编语言课程设计四则运算计算器概要_第3页
第3页 / 共17页
汇编语言课程设计四则运算计算器概要_第4页
第4页 / 共17页
汇编语言课程设计四则运算计算器概要_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《汇编语言课程设计四则运算计算器概要》由会员分享,可在线阅读,更多相关《汇编语言课程设计四则运算计算器概要(17页珍藏版)》请在金锄头文库上搜索。

1、微机原理实验报告汇编语言课程设计报告( 2012 - 2013 年度第 1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋1实现加减乘除四则运算的计算器1 实验目的 深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执

2、行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。第一步,用INT 21H的1号功能调用来进行输入。利用1号功能调用来输入,即

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

4、模块。设计程序主体部分,根据主体部分所需的功能模块对各个子模块一一进行设计编写。子模块中包含有:do_add加法运算模块,do_sub减法运算模块,do_mul乘法运算模块,do_div除法运算模块,input输入模块等。最后还要对这个简易计算器进行功能完善。为了使程序符合我们使用者的操作习惯,设计当用户根据提示信息输入一个算式后,按下enter键或是=符号键时,程序依据输入的算式进行计算,并将结果显示在屏幕上。如果用户输入错误,则返回,提示信息让用户重新输入算式,当用户按下Q或q键时退出程序。在各个子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具有简单运算功能的计算器。3.2

5、程序流程图及说明此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的程序的一个总体的框架。程序流程图说明:通过流程图,可以看出程序开始运行时,首先输出提示语句,当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调用哪个功能模块,首先要判断输入的字符是否为Q或q,若是,则退出程序,不是则继续输入。还要判断输入的是否为0-9,+,-,*,/这些字符,若不是会报错,是则将根据运算符号调用相应的功能模块完成运算。最后将运算的结果显示在屏幕上,并返回主题程序,使用户可以重新输入。程序开始输入一个算式Q/q?0f+-*/?存储数据判断运算符号调用运算功能模块输入出

6、错NYY 输出提示语句退出YNY按下Enter或=键显示结果17 源程序清单B_PEQUBYTEPTRW_PEQUWORDPTRD_PEQUDWORDPTRCODESEGMENTASSUMECS:CODE,DS:CODEORG100H;主程序开始NEWSTAR:JMPSTAREVENNUM1DW0,0NUM2DW0,0NUM3DW0,0JGV4DW0,0YSFLABELWORDYSF1DB0YSF2DB0JUVDB0UVDB0;使DS:SI指向第一有效字符OVERSLABELNEARCLDPUSHAXOVERS1:LODSBCMPAL,JZOVERS1CMPAL,9JZOVERS1DECSIC

7、MPAL,13POPAXRET;输出一个制表符TABLABELNEARMOVAL,9JMPSHORTDISP;输出一个回车换行符CRLFLABELNEARMOVAL,13CALLDISPMOVAL,10;显示一个字符DISPLABELNEARPUSHAXPUSHDXMOVAH,2MOVDL,ALINT21HPOPDXPOPAXRET;检查是否为运算符ISYSFLABELNEARCLDLODSBCALLISJJJZISYSF1CALLISIIJZISYSF1DECSIISYSF1:RET;检查是否是加减运算ISJJLABELNEARCMPAL,+JZISYSF1CMPAL,-RET;检查是否为乘

8、除运算ISIILABELNEARCMPAL,*JZISYSF1CMPAL,/JZISYSF1CMPAL,RET;数据输出;CX=10十进制;CX=16十六进制DOUTLABELNEARPUSHAXPUSHBXPUSHDXPUSHBPXORBP,BPDOUT1:INCBPPUSHAXMOVAX,DXXORDX,DXDIVCXMOVBX,AXPOPAXDIVCXPUSHDXMOVDX,BXORBX,AXJNZDOUT1DOUT2:POPAXADDAL,0CMPAL,9JBEDOUT3ADDAL,A-9-1DOUT3:CALLDISPDECBPJNZDOUT2POPBPPOPDXPOPBXPOPAX

9、RET;输入数据在DX:AX中返回;CX=0数据为10进制;CX#0数据为16进制DATELABELNEARPUSHBXPUSHBPPUSHDIXORAX,AXXORDX,DXDATE1:MOVDI,AXLODSBCMPAL,0JBDATE7CMPAL,9JADATE6DATE2:ANDAX,0FHSHLDI,1RCLDX,1MOVBX,DIMOVBP,DXSHLDI,1RCLDX,1SHLDI,1RCLDX,1JCXZDATE3SHLDI,1RCLDX,1JmpshortDATE4DATE3:ADDDI,BXADCDX,BPDATE4:ADDAX,DIADCDX,0JMPDATE1DATE5

10、:ADDAL,9JMPDATE2DATE6:JCXZDATE7CMPAL,AJBDATE7CMPAL,FJBEDATE5CMPAL,aJBDATE7CMPAL,fJBEDATE5DATE7:MOVAX,DIDECSIORDI,DXPOPDIPOPBPPOPBXRET;数据1与数据2根据YSF1进行加减运算JSJJLABELNEARMOVAX,NUM2MOVDX,NUM2+2CMPYSF1,+JZJSJJ1SUBNUM1,AXSBBNUM1+2,DXJMPSHORTJSJJ2JSJJ1:ADDNUM1,AXADCNUM1+2,DXJSJJ2:RET;数据1与数据2根据YSF1进行乘除运算JSII1LABELNEARMOVBX,OFFSETNUM1JMPSHORTJSII2_1;数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号