汇编语言课程设计:四则运算计算器_第1页
汇编语言课程设计:四则运算计算器_第2页
汇编语言课程设计:四则运算计算器_第3页
汇编语言课程设计:四则运算计算器_第4页
汇编语言课程设计:四则运算计算器_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*******************实践教学*******************兰州理工大学技术工程学院2021年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号:11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级:11计算机科学与技术1班学生姓名:郭利强学号:11730108题目类型:软件工程(R)指导教师:刘树群题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。把程序中的明显错误事先排除。5、程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。6、完成课程设计报告①需求和规格说明:设计题目和问题描述:题目要解决的问题是什么;②设计思路:主要算法思想,程序功能图,函数之间的调用关系图;设计表示:每个函数或过程的功能,列出每个过程或函数所调用的过程或函数,并画出各函数的流程图;详细设计:主要算法的伪代码;③调试报告:调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论和分析;改进设想;经验和体会等;④程序实现注释;⑤附录:源程序清单和结果。如果题目规定了测试数据,则结果要求包含这些测试数据和运行输出,当然还可以含其他测试数据和运行输出。提交的成果1.设计说明书一份,内容包括:1)中文摘要100字;关键词3-5个;2)前言;3)系统分析(包含需要的系统流程图);4)系统总体设计(包含总体软件结构图、总体数据结构);5)详细设计;6)系统测试(包含测试方案、测试用例、测试结果及软件可靠性分析);7)软件使用说明书(核心界面说明);8)设计总结、参考文献、致谢等。2.刻制光盘一张。主要参考文献[1]李敬兆等编.《汇编语言程序设计》.合肥:中国科学技术大学出版社,2021.9[2]李敬兆等编.《汇编语言程序设计实验教程及习题解答》.合肥:中国科学技术大学出版社,2021.9[3]王爽等编.《汇编语言》.北京:清华大学出版社,2021.5[4]曹加恒等编.《新一代汇编语言课程设计》.北京:高等教育出版社,2021.6[5]杨路明等编.《汇编语言程序设计》.长沙:中南大学出版社,2021.8[6]詹仕华等编.《汇编语言程序设计》.北京:中国电力出版社,2021.2[7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.北京:中国电力出版社,2021.2[8]宋彩莉等编.《汇编语言程序设计学习指导》.西安:西安交通大学出版社,2021.2摘要汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。本次设计的简单计算器支持简单的四则运算。关键词:汇编语言,四则运算计算器,高效,硬件目录TOC\o"1-2"\h\u14531摘要 525232一系统分析 7二系统总体设计11727 82.1系统总体分析11727 82.2主模块框图及说明11727 8详细设计26699 103.1主模块及子模块说明26699 103.2各模块详细设计26699 10程序调试16799 194.1运行界面如图16799 194.2算法的分析16799 195.3调试过程及分析16799 19设计总结17151 20参考文献24502 213132致谢 221系统分析该课程设计的任务是做一个简易计算器,可以实现加减乘除四则运算。我们要解决的问题有:以什么方式输入数字、判断是进行什么运算、运算过程中的进位和借位问题以及如何实现清屏等问题。本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。本程序使用了函数和宏混用的方式实现了代码的较好的可读性,使程序看起来结构严谨。2系统总体设计2.1系统总体分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。本程序使用了函数和宏混用的方式实现了代码的较好的可读性,使程序看起来结构严谨。2.2主模块框图及说明本程序的功能结构图如图2-1:计算显示进制转换清屏主程序计算显示进制转换清屏主程序图2-1功能结构图程序流程图如图2-2:输入NUM1初始化输入NUM1初始化检验是不是数输入NUM2否是是是检验是不是数是开始选择运算符号减加乘除操作数一是否比二大除数是否为0将结果转化为十进制结束否3详细设计3.1主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。子模块:主要完成对数据的加工,处理。3.2各模块详细设计主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。整个过程按“ESC”结束。流程图如下图4-1:显示结果判断输入的合法性接受输入显示主界面,提示输入显示结果判断输入的合法性接受输入显示主界面,提示输入N提示出错,返回提示出错,返回Y图3-1主模块流程图代码如下:CURSMACROA,BMOVAH,2;置光标位置MOVBH,0;页号为0MOVDH,A;设置光标的坐标为(A.B)MOVDL,BINT10H;BIOS调用ENDM;DISPMSGMACROMESSAGELEADX,MESSAGE;传递MESSAGE的偏移地址MOVAH,9;显示字符串INT21H;DOS调用ENDM;CLEARMACROCOLOR;清屏MOVAH,6;屏幕初始化MOVAL,0;页号MOVCH,0;设置左上角的坐标为(0,0)MOVCL,0MOVDL,100;设置右上角的坐标为(100,100)MOVDH,100MOVBH,COLOR;卷入行属性INT10H;BIOS调用ENDM.MODELSMALL.STACK.DATA;数据段定义MSG0DB'********************',0DH,0AH;,0dh,0ah,0dh,0ahDB'**',0DH,0AH;db'**',0dh,0ah;db'**',0dh,0ahDB'*caculater*',0DH,0AH;,0dh,0ah,0dh,0ahDB'**',0DH,0AHDB'**',0DH,0AHDB'**',0DH,0AHDB'*NUM1:'DB'*',0DH,0AH;,0dh,0ah,0dh,0ah,0dhDB'**',0DH,0AHDB'**',0DH,0AHDB'**',0DHDB'*NUM2:'DB'*',0DH,0AH;,0dh,0ah,0dh,0ah,0dhDB'**',0DH,0AHDB'**',0DH,0AHDB'**',0DHDB'*RESULT:'DB'*',0DH,0AH,0DH;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dhDB'**',0DH,0AHDB'**',0DH,0AHDB'**',0DH,0AHDB'**',0DH,0AHDB'**',0DH,0AHDB'********************','$'MSG1DB'choose+,-,*,/','$'MSG2DB'youchoosewrong','$',0AH,0DHMSG3DB'PressESCtoExit!',0DH,0AH,'$'MSG4DB'Pressanykeytocontinue!',0DH,0AH,'$'MSG5DB'-','$'MSG6DB'.','$'MSG7DB'errorinput!','$'MSG8DB'data2iswrong!','$'NUM1DW?NUM2DW?子模块:完成对数据的进一步加工处理,转换格式并得出结果。首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:接收用户的运算符号接收用户的运算符号判断合法性判断合法性返回主界面返回主界面N调用对应模块运算数据,得出结果Y调用对应模块运算数据,得出结果图3-2子模块流程图代码如下:BEGINPROCNEARBACK:CLEAR1EHCURS2,20;设置光标为(2.20)DISPMSGMSG0;显示用户界面CURS8,41;设置光标为(8,41),第一行MOVBX,0MOVCX,2NEWCHAR1:MOVAH,1;键盘输入并回显INT21H;DOS调用CMPAL,30H;检查输入的字符是不是数字JAEJ1;如果不是,则转移至J1JMPD2;是,转移到D2执行J1:CMPAL,39H;与9的ASCII比较JBEJ2;如果输入的字符是0-9,则转移至J2JMPD2;如果不是数字,则转移至D2J2:SUBAL,30HCBW;AL的内容符号扩展到AHXCHGAX,BXMOVDI,10MULDIXCHGAX,BXADDBX,AXLOOPNEWCHAR1MOVNUM1,BXCURS11,41;设置光标位为(11,40),第二行MOVBX,0MOVCX,2NEWCHAR2:MOVAH,1;键盘输入并回显INT21H;DOS调用CMPAL,30H;与0的ASCII码比较JAEJ3;如果输入数字大于等于0则跳转至J3JMPD2J3:CMPAL,39H;与9比较JBEJ4;如果小于或等于9则跳转JMPD2;如果输入不是数字则跳转J4:SUBAL,30H;如果输入不是0-9,则转化成相应的字符CBW;将AL符号扩展到AHXCHGAX,BXMOVDI,10MULDIXCHGAX,BXADDBX,AXLOOPNEWCHAR2MOVNUM2,BXMOVAX,NUM1MOVBX,NUM2PUSHAXPUSHBXCURS15,33;设置光标的位置为(15.33),第三行DISPMSGMSG1;显示提示信息MOVAH,1;接受键盘输入并回显INT21H;DOS调用CMPAL,'+'JEADDI;如果运算符为+,则计算两数之和CMPAL,'-'JESUBT;如果运算符为-,则计算两数之差CMPAL,'*'JEMULT;如果运算符为*,则计算两数之积CMPAL,'/'JEDIVI;如果运算符为/,则计算两数之商CURS16,25;设置光标为(16,25)DISPMSGMSG2;在屏幕上输出提示信息JMPD1;;ADDTHETWODATASADDI:POPBXPOPAXADDAX,BX;计算两数字之和PUSHAXCURS14,41;设置光标位置为(14,41)POPAXCALLCHANGE;将结果转换为十进制数JMPD1SUBT:POPBXPOPAXCMPAX,BX;比较两数大小JAED0;如果AX>=BX则跳转XCHGAX,BXPUSHAXPUSHBXCURS14,40;设置光标位置为(14,40)DISPMSGMSG5;在屏幕上显示负号POPBXPOPAXD0:SUBAX,BX;计算两数之差PUSHAXCURS14,41;设置光标位置为(14,41)POPAXCALLCHANGE;将结果转换为十进制数JMPD1MULT:POPBXPOPAXMULBX;计算两数之积PUSHAXCURS14,41;设置光标位置为(14,41)POPAXCALLCHANGE;将结果转换为十进制数JMPD1DIVI:POPBXPOPAXCMPBX,0;判断除数是否为0JEERROR;如果是0则跳转CWDDIVBX;计算两数之商PUSHDXPUSHAXCURS14,41;设置光标位置为(14,41)POPAXCALLCHANGE;将十六进制数转换为十进制数POPDXCMPDX,0JNELOP;如果DX不等于0则跳转JMPD1LOP:MOVCX,4;设置精确度为小数点后4位PUSHDXDISPMSGMSG6;输出小数点POPDXCON:PUSHBXMOVAX,DXMOVBX,10MULBXPOPBXCWD;将AX的内容符号扩展到双字DIVBX;计算小数点后每一位的数字PUSHDXPUSHCXCALLCHANGE;将十六进制数转化为十进制数POPCXPOPDXCMPDX,0;判断是否已经计算到小数点后第六位JED1;如果是,则跳转LOOPCON;如果不是,就继续计算ERROR:CURS15,33;设置光标位置为(15,33)DISPMSGMSG8;提示出错D1:RETD2:PUSHAXPUSHBXCURS15,33;设置光标位置为(15,33)DISPMSGMSG7;提示输入出错POPBXPOPAXRETBEGINENDP4.程序调试4.1运行界面如图在NUM1这一行会提示输入第一个数据,NUM2这一行提示输入第二个数据,输入完成两个数据后程序会提示允许输入运算符,输入无误后在RESULT行显示结果。4.2算法的分析本程序使用了宏和函数调用的方法,这样做使得整个程序体看上去严谨,舒服。整个程序中的CHANGE子程序,将十六进制数转换为十进制数。BEGIN子程序开始运算。DISPMSG子程序,显示用户界面。通过这几个及程序的协助,使得这个系统可以正常的运行。4.3调试过程及分析编写完代码后分别点击按钮“C”,”L”,”R”,依次完成编译、连接和运行过程,也可以进入DOS环境下用DEBUG命令完成类似的功能,整个程序按“ESC”退出。设计总结经调试,基本上任务要求设计的所有功能都实现,调试出的计算结果均正确。一周的课程设计结束了,给我的总体感觉就是忙碌但充实,而且真正学到了东西。程序的主要功能是实现四则运算,整个程序中主要分为,输入算式,加法,减法,乘法,除法和以十进制显示结果这几个部分本程序基本实现了四则运算的功能,但还没能实现带有括号的四则运算,还有在除法运算中不能运算较大的数,会产生溢出现象一开始的时候自己编出来的程序有很多问题,尤其是在循环程序上,因此查阅了不少资料,也请教了好几个同学帮着修改,调试了好久才能正常运行。由于能力有限,程序还是有不完美的地方。这次的综合实验让我对汇编有了更深刻的认识,对各种指令有了进一步的理解。参考文献[1]李敬兆等编.《汇编语言程序设计》.合肥:中国科学技术大学出版社,2021.9[2]李敬兆等编.《汇编语言程序设计实验教程及习题解答》.合肥:中国科学技术大学出版社,2021.9[3]王爽等编.《汇编语言》.北京:清华大学出版社,2021.5[4]曹加恒等编.《新一代汇编语言课程设计》.北京:高等教育出版社,2021.6[5]杨路明等编.《汇编语言程序设计》.长沙:中南大学出版社,2021.8[6]詹仕华等编.《汇编语言程序设计》.北京:中国电力出版社,2021.2[7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.北京:中国电力出版社,2021.2[8]宋彩莉等编.《汇编语言程序设计学习指导》.西安:西安交通大学出版社,2021.2致谢本次课程设计的成功完成,我首先感谢我的指导老师刘树群,他自始至终都给予了我莫大的帮助,正是在刘树群老师的悉心指导下我才能顺利完成本次课程设计中的每一个计划。在这次课程设计中,无论从课题选择,方案论证上,还是到具体的设计和调试,每一项安排他都提出了至关重要的建议,使我少走了许多弯路,节省了大量时间,可以说,我的课程设计的顺利完成凝聚着老师的大量心血,在此向刘树群老师表示深深的感谢。当然,我也要感谢我的同学和那些互联网上的朋友,他们毫不吝啬的将自己所掌握的知识拿出来资源共享,才能使我的部分功能模块得以实现,谢谢你们。

社会实践报告系别:班级:学号:姓名:作为祖国未来的事业的继承人,我们这些大学生应该及早树立自己的历史责任感,提高自己的社会适应能力。假期的社会实践就是很好的锻炼自己的机会。当下,挣钱早已不是打工的唯一目的,更多的人将其视为参加社会实践、提高自身能力的机会。许多学校也积极鼓励大学生多接触社会、了解社会,一方面可以把学到的理论知识应用到实践中去,提高各方面的能力;另一方面可以积累工作经验对日后的就业大有裨益。进行社会实践,最理想的就是找到与本专业对口单位进行实习,从而提高自己的实战水平,同时可以将课本知识在实践中得到运用,从而更好的指导自己今后的学习。但是作为一名尚未毕业的大学生,由于本身具备的专业知识还十分的有限,所以我选择了打散工作为第一次社会实践的方式。目的在于熟悉社会。就职业本身而言,并无高低贵贱之分,存在即为合理。通过短短几天的打工经历可以让长期处于校园的我们对社会有一种更直观的认识。实践过程:自从走进了大学,就业问题就似乎总是围绕在我们的身边,成了说不完的话题。在现今社会,招聘会上的大字报都总写着“有经验者优先”,可还在校园里面的我们这班学子社会经验又会拥有多少呢?为了拓展自身的知识面,扩大与社会的接触面,增加个人在社会竞争中的经验,锻炼和提高自己的能力,以便在以后毕业后能真正真正走入社会,能够适应国内外的经济形势的变化,并且能够在生活和工作中很好地处理各方面的问题,我开始了我这个假期的社会实践-走进天源休闲餐厅。实践,就是把我们在学校所学的理论知识,运用到客观实际中去,使自己所学的理论知识有用武之地。只学不实践,那么所学的就等于零。理论应该与实践相结合。另一方面,实践可为以后找工作打基础。通过这段时间的实习,学到一些在学校里学不到的东西。因为环境的不同,接触的人与事不同,从中所学的东西自然就不一样了。要学会从实践中学习,从学习中实践。而且在中国的经济飞速发展,又加入了世贸,国内外经济日趋变化,每天都不断有新的东西涌现,在拥有了越来越多的机会的同时,也有了更多的挑战,前天才刚学到的知识可能在今天就已经被淘汰掉了,中国的经济越和外面接轨,对于人才的要求就会越来越高,我们不只要学好学校里所学到的知识,还要不断从生活中,实践中学其他知识,不断地从各方面武装自已,才能在竞争中突出自已,表现自已。在餐厅里,别人一眼就能把我人出是一名正在读书的学生,我问他们为什么,他们总说从我的脸上就能看出来,也许没有经历过社会的人都有我这种不知名遭遇吧!我并没有因为我在他们面前没有经验而退后,我相信我也能做的像他们一样好.我的工作是在那做传菜生,每天9点钟-下午2点再从下午的4点-晚上8:30分上班,虽然时间长了点但,热情而年轻的我并没有丝毫的感到过累,我觉得这是一种激励,明白了人生,感悟了生活,接触了社会,了解了未来.在餐厅里虽然我是以传菜为主,但我不时还要做一些工作以外的事情,有时要做一些清洁的工作,在学校里也许有老师分配说今天做些什么,明天做些什么,但在这里,不一定有人会告诉你这些,你必须自觉地去做,而且要尽自已的努力做到最好,一件工作的效率就会得到别人不同的评价。在学校,只有学习的氛围,毕竟学校是学习的场所,每一个学生都在为取得更高的成绩而努力。而这里是工作的场所,每个人都会为了获得更多的报酬而努力,无论是学习还是工作,都存在着竞争,在竞争中就要不断学习别人先进的地方,也要不断学习别人怎样做人,以提高自已的能力!记得老师曾经说过大学是一个小社会,但我总觉得校园里总少不了那份纯真,那份真诚,尽管是大学高校,学生还终归保持着学生的身份。而走进企业,接触各种各样的客户、同事、上司等等,关系复杂,但我得去面对我从未面对过的一切。记得在我校举行的招聘会上所反映出来的其中一个问题是,学生的实际操作能力与在校理论学习有一定的差距。在这次实践中,这一点我感受很深。在学校,理论的学习很多,而且是多方面的,几乎是面面俱到;而在实际工作中,可能会遇到书本上没学到的,又可能是书本上的知识一点都用不上的情况。或许工作中运用到的只是很简单的问题,只要套公式似的就能完成一项任务。有时候我会埋怨,实际操作这么简单,但为什么书本上的知识让人学得这么吃力呢?这是社会与学校脱轨了吗?也许老师是正确的,虽然大学生生活不像踏入社会,但是总算是社会的一个部分,这是不可否认的事实。但是有时也要感谢老师孜孜不倦地教导,有些问题有了有课堂上地认真消化,有平时作业作补充,我比一部人具有更高的起点,有了更多的知识层面去应付各种工作上的问题,作为一名大学生,应该懂得与社会上各方面的人交往,处理社会上所发生的各方面的事情,这就意味着大学生要注意到社会实践,社会实践必不可少。毕竟,很快我就不再是一名大学生,而是社会中的一分子,要与社会交流,为社会做贡献。只懂得纸上谈兵是远远不及的,以后的人生旅途是漫长的,为了锻炼自己成为一名合格的、对社会有用的人才.很多在学校读书的人都说宁愿出去工作,不愿在校读书;而已在社会的人都宁愿回校读书。我们上学,学习先进的科学知识,为的都是将来走进社会,献出自己的一份力量,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论