已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理实验报告汇编语言课程设计报告( 2012 - 2013 年度第 1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋1实现加减乘除四则运算的计算器1 实验目的 深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。第一步,用INT 21H的1号功能调用来进行输入。利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是+号、-号、*号、/号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。第三步,根据计算器程序所要实现的功能完成各个功能模块。设计程序主体部分,根据主体部分所需的功能模块对各个子模块一一进行设计编写。子模块中包含有:do_add加法运算模块,do_sub减法运算模块,do_mul乘法运算模块,do_div除法运算模块,input输入模块等。最后还要对这个简易计算器进行功能完善。为了使程序符合我们使用者的操作习惯,设计当用户根据提示信息输入一个算式后,按下enter键或是=符号键时,程序依据输入的算式进行计算,并将结果显示在屏幕上。如果用户输入错误,则返回,提示信息让用户重新输入算式,当用户按下Q或q键时退出程序。在各个子功能模块设计好的情况下,通过主题模块的合理调用,最终实现一个具有简单运算功能的计算器。3.2程序流程图及说明此程序流程图简要地表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的程序的一个总体的框架。程序流程图说明:通过流程图,可以看出程序开始运行时,首先输出提示语句,当用户输入后,程序根据所输入的内容进行判断,通过判断的结果来决定调用哪个功能模块,首先要判断输入的字符是否为Q或q,若是,则退出程序,不是则继续输入。还要判断输入的是否为0-9,+,-,*,/这些字符,若不是会报错,是则将根据运算符号调用相应的功能模块完成运算。最后将运算的结果显示在屏幕上,并返回主题程序,使用户可以重新输入。程序开始输入一个算式Q/q?0f+-*/?存储数据判断运算符号调用运算功能模块输入出错NYY 输出提示语句退出YNY按下Enter或=键显示结果17 源程序清单B_PEQUBYTEPTRW_PEQUWORDPTRD_PEQUDWORDPTRCODESEGMENTASSUMECS:CODE,DS:CODEORG100H;主程序开始NEWSTAR:JMPSTAREVENNUM1DW0,0NUM2DW0,0NUM3DW0,0JGV4DW0,0YSFLABELWORDYSF1DB0YSF2DB0JUVDB0UVDB0;使DS:SI指向第一有效字符OVERSLABELNEARCLDPUSHAXOVERS1:LODSBCMPAL,JZOVERS1CMPAL,9JZOVERS1DECSICMPAL,13POPAXRET;输出一个制表符TABLABELNEARMOVAL,9JMPSHORTDISP;输出一个回车换行符CRLFLABELNEARMOVAL,13CALLDISPMOVAL,10;显示一个字符DISPLABELNEARPUSHAXPUSHDXMOVAH,2MOVDL,ALINT21HPOPDXPOPAXRET;检查是否为运算符ISYSFLABELNEARCLDLODSBCALLISJJJZISYSF1CALLISIIJZISYSF1DECSIISYSF1:RET;检查是否是加减运算ISJJLABELNEARCMPAL,+JZISYSF1CMPAL,-RET;检查是否为乘除运算ISIILABELNEARCMPAL,*JZISYSF1CMPAL,/JZISYSF1CMPAL,RET;数据输出;CX=10十进制;CX=16十六进制DOUTLABELNEARPUSHAXPUSHBXPUSHDXPUSHBPXORBP,BPDOUT1:INCBPPUSHAXMOVAX,DXXORDX,DXDIVCXMOVBX,AXPOPAXDIVCXPUSHDXMOVDX,BXORBX,AXJNZDOUT1DOUT2:POPAXADDAL,0CMPAL,9JBEDOUT3ADDAL,A-9-1DOUT3:CALLDISPDECBPJNZDOUT2POPBPPOPDXPOPBXPOPAXRET;输入数据在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: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;数据2与数据3根据YSF2进行乘除运算JSII2LABELNEARMOVBX,OFFSETNUM2JSII2_1:DB66HMOVAX,BXDB66HMOVCX,BX+4CMPYSF2,*JNZJSII2_2DB66HIMULCXJMPSHORTJSII2_3JSII2_2:DB66HCWDDB66HIDIVCXCMPYSF2,/JZJSII2_3DB66HXCHGDX,AXJSII2_3:DB66HMOVBX,AXRET;显示结果XUJGLABELNEARMOVAX,JGV4MOVDX,JGV4+2MOVCX,10CMPUV,10JZXUJG0MOVCX,16XUJG0:TESTDX,8000HJZXUJG1CMPUV,10JZXUJG2CALLDOUTXUJG2:NOTAXNOTDXADDAX,1ADCDX,0PUSHAXCMPUV,10JZXUJG3MOVAL,CALLDISPMOVAL,(CALLDISPXUJG3:MOVAL,-CALLDISPPOPAXCMPUV,10JZXUJG1CALLDOUTMOVAL,)CALLDISPRETXUJG1:CALLDOUTRET;计算结果放入DX:AX中JSJGLABELNEARCALLJSJJMOVAX,NUM1MOVDX,NUM1+2RET;从DS:SI处取一个数据LOADATELABELNEARLODSBCMPAL,(JZLOADATE1DECSIPUSHCXXORCX,CXCMPUV,10JZLOADATE0INCCX;取16进制数LOADATE0:CALLDATE;取数据放入DX:AX中POPCXRETLOADATE1:PUSHNUM1;保存数据1数据2及运算符PUSHNUM1+2PUSHNUM2PUSHNUM2+2PUSHYSFINCJUVMOVJGV4,0;结果值清零MOVJGV4+2,0;进行四则运算SZYSLABELNEARCALLISYSF;首字符是运算符?JZSZYS2CALLLOADATE;不是,取数并保存MOVNUM1,AXMOVNUM1+2,DXSZYS1:XORAX,AX;数据2清零MOVNUM2,AXMOVNUM2+2,AXCALLISYSF;下个是运算符?JZSZYS3JNZSZYS6SZYS2:PUSHAXMOVAX,JGV4;将结果作为数据1MOVNUM1,AXMOVAX,JGV4+2MOVNUM1+2,AXPOPAXSZYS3:MOVYSF1,ALMOVYSF2,ALCALLISJJ;是加减运算转JZSZYS4CALLLOADATE;取数据2MOVNUM2,AXMOVNUM2+2,DXCALLJSII1;数据1与数据2根据YSF1进行乘除运算JMPSZYS1;结果保存在数据1中SZYS4:CALLLOADATE;取数据2并保存MOVNUM2,AXMOVNUM2+2,DXSZYS4_1:CALLISYSFJNZSZYS6CALLISJJ;运算符2是加减运算?JNZSZYS5;不是转PUSHAXCALLJSJJ;数据1与数据2根据YSF1进行加减运算POPAX;结果保存在数据1中MOVYSF1,AL;保存新的运算符JMPSZYS4SZYS5:MOVYSF2,AL;保存运算符2CALLLOADATE;取数据3MOVNUM3,AXMOVNUM3+2,DXCALLJSII2;数据2与数据3根据YSF2进行乘除运算JMPSZYS4_1;结果保存在数据2中SZYS6:MOVCL,ALCMPAL,13JNZSZYS9SZYS7:CALLJSJGCMPJUV,0JZSZYS8DECJUVPOPYSFPOPNUM2+2POPNUM2POPNUM1+2POPNUM1RETSZYS8:CMPCL,)JZSZYS10MOVJGV4,AXMOVJGV4+2,DXJNZSZYS12SZYS9:CMPAL,)JNZSZYS11INCSIJMPSZYS7SZYS10:MOVNUM1,AXMOVNUM1+2,DXJMPSZYS1SZYS11:STCRETSZYS12:CLCRET;数制处理UVILLABELNEARPUSHSIUVIL1:LODSBCMPAL,JZUVIL2CMPAL,9JZUVIL2CMPAL,13JZUVIL4JNZUVIL1UVIL2:MOVBX,SICALLOVERSJZUVIL3LODSWCALLOVERSPOPSIJNZSZYS11CMPAX,01JNZSZYS11PUSHSIMOVUV,10UVIL3:MOVAL,13MOVBX-1,ALUVIL4:POPSICLCRET;预置结果YVJGLABELNEARMOVAH,52HINT21HMOVAX,ES:BX-2MOVDS,AXMOVAX,DS:0CHMOVCS:JGV4,AXMOVAX,DS:0EHMOVCS:JGV4+2,AXPUSHCSPOPDSPUSHCSPOPESRET;保存结果BCJGLABELNEARMOVAH,52HINT21HMOVAX,ES:BX-2MOVDS,AXMOVAX,CS:JGV4MOVDS:0CH,AXMOVAX,CS:JGV4+2MOVDS:0EH,AXPUSHCSPOPDSPUSHCSPOPESRETSTAR:MOVSI,81HCLDCALLOVERSJNZSTAR1STAR0:MOVDX,O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产业安全生产管理办法
- 动物救助捐赠管理计划
- 体育赛事巴士租赁合同
- 神经外科人才聘用合同模板
- 2022年大学森林资源专业大学物理下册月考试卷C卷-附解析
- 2022年大学生物科学专业大学物理二月考试题C卷-附解析
- 25楼地面采暖工程施工合同
- 2022年大学数学专业大学物理二期末考试试卷D卷-附解析
- 2022年大学口腔医学专业大学物理二期末考试试卷-附解析
- 新生儿湿疹护理健康宣教
- 光伏施工进度计划表
- 【企业员工薪酬激励研究国内外文献综述2200字(论文)】
- DB4501-T 0008-2023 化妆品行业放心消费单位创建规范
- 锅炉水压试验报告
- 低压开关柜出厂检验报告-5
- 2“现代性”与“现代化”
- 基于PLC的水箱温度控制系统
- 第二课堂活动记录表
- 消防救援-消防火场供水
- 植物嫁接实验报告
- 学生营养餐满意度调查表
评论
0/150
提交评论