信息学院课程设计题目:2位数计算器程序设计__姓名:_______学号:_______班级:课程:汇编语言________任课教师:侯艳艳____2011年12月课程设计任务书及成绩评定题目2位数计算器程序设计课程设计的任务及要求任务:利用汇编语言编写计算器程序实现能完成两位数的加、减、乘、除运算功能要求:熟悉汇编指令、顺序程序的编写方法学会使用DOS功能调用、子程序调用完成相关操作课程设计所需的软件、硬件等软件:MASM软件硬件:可以运行汇编语言的计算机课程设计进度计划第一天熟悉软件环境第二天绘制程序流程图第三天编写程序代码第四天用DEBUG调试运行程序第五天编写课程设计说明书任课教师评语成绩:教师签名:日期:-1-目录摘要……………………………………………………………………………………………………………21.设计目的………………………………………………………………………………………………•22.概要设计………………………………………………………………………………………………•32.1系统总体分析…………………………………………………………………………•32.2程序流程图……………………………………………………………………………33.详细设计…………………………………………………………………………………………•……43.1主程序及子程序说明……………………………………………………………………………43.2程序代码编写……………………………………………………………………………………44.程序调试………………………………………………………………………………………………64.1运行界面分析……………………………………………………………………………………64.2算法的分析………………………………………………………………………………………64.3调试过程及分析…………………………………………………………………………………65.心得体会………………………………………………………………………………………………75.1设计体会………………………………………………………………………………………•…75.2系统改进………………………………………………………………………………………•…7参考文献……………………………………………………………………………………………………8-2-摘要本次课程设计的题目是用汇编语言实现一个简单的2位数计算器,要求:编写一个程序,可实现对两个2位十进制数进行加、减、乘、除四则运算的计算工具。计算器是最简单的计算工具,要想用汇编语言实现它就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及子程序的调用等汇编语言知识进行综合运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块,当实现各个程序模块后,通过DOS功能调用完成运算结果的输出显示,最终实现一个简单的计算器功能。1.设计目的通过本次的课程设计,使自己加深对汇编语言的了解,应用《汇编语言》等所学相关知识及查阅资料,完成简易2位计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能里的目的。通过本次课程设计的训练,可以使我在基本思路和基本方法上对基于8086/8088CPU的汇编语言程序设计有一个比较感性的认识,并具备一定程度的设计能力,从而能够熟练掌握编写汇编语言源程序的基本方法和基本构架,学会编写顺序结构、分支结构、循环结构和子程序的汇编程序,掌握程序中数据的产生与输入输出的方法以及一些关于汇编语言更深层次方面有初步的认识。-3-2.概要设计2.1系统总体分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。本程序使用了DOS功能调用、子程序嵌套调用的方式实现了代码的较好的可读性,使程序看起来结构严谨。2.2程序流程图本程序的流程图如图所示:流程图开始将数据的ASCII码转换为对应的二进制数值将符号保存至AL中AL为‘+’?加运算AL为‘-’?AL为‘*’?AL为‘/’?减运算乘运算除运算输入计算公式将计算结果转换成对应的ASCII码输出计算结果继续?结束-4-3.详细设计3.1主程序及子程序说明主程序:主要完成程序的主体框架结构,提供人机交互功能。子程序:主要完成对数据的加工,处理和输出。3.2程序代码编写代码如下:STACKSEGMENTSTACKDW200DUP(0)STACKENDSDATASEGMENTBUFDB7DB0DB7DUP(0)MSGDB10,13,'$'MSSDB'......$'W1DB'Inputerror!',10,13,'Pleaseto01+02forminput:$'TSDB'input[01+02=]:',10,13,'$'XSDB'-------2digitsCalculator-------$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXLEADX,XSMOVAH,9INT21HB1:LEADX,MSGMOVAH,9INT21HLEADX,TSMOVAH,9INT21HB2:MOVAH,10LEADX,BUFINT21HLEADX,MSGMOVAH,9INT21HMOVBH,BUF+2MOVBL,BUF+3MOVCH,BUF+5MOVCL,BUF+6SUBBH,30HSUBBL,30HSUBCH,30HSUBCL,30HMOVDH,10MOVAH,0MOVAL,BHMULDHMOVBH,0ADDBX,AXMOVAH,0MOVAL,CHMULDHMOVCH,0ADDCX,AXMOVAL,BUF+4CMPAL,'+'JZL1CMPAL,'-'JZL2CMPAL,'*'JZL3CMPAL,'/'JZL4LEADX,W1MOVAH,9INT21HJMPB2L1:ADDBX,CXCALLBDCJMPE1L2:CMPBX,CXJBZ21SUBBX,CXJMPZ22-5-Z21:MOVAH,2MOVDL,'-'INT21HSUBCX,BXMOVBX,CXZ22:CALLBDCJMPE1L3:MOVAH,0MOVAL,BLMULCLMOVBX,AXCALLBDCJMPE1L4:MOVDX,0MOVAX,BXDIVCXMOVBX,AXCALLBDCCMPDX,0JZE1LEADX,MSSMOVAH,9INT21HMOVBX,DXCALLBDCE1:JMPB1MOVAH,4CHINT21HBDCPROCPUSHCXPUSHDXCMPBX,10000JNBP1CMPBX,1000JNBP2CMPBX,100JNBP3CMPBX,10JNBP4JMPP5P1:MOVCX,10000CALLDISPP2:MOVCX,1000CALLDISPP3:MOVCX,100CALLDISPP4:MOVCX,10CALLDISPP5:MOVCX,1CALLDISPPOPDXPOPCXRETBDCENDPDISPPROCPUSHAXPUSHCXPUSHDXMOVAX,BXMOVDX,0DIVCXMOVBX,DXMOVDL,ALADDDL,30HMOVAH,2INT21HPOPDXPOPCXPOPAXRETDISPENDPCODEENDSENDSTART-6-4.程序调试4.1运行界面分析运行界面如图所示:在提示input[01+02=]:处按照格式输入运算公式,输入完成后敲击回车键,输入无误后在下一行显示运算结果。4.2算法的分析本程序使用了子程序的嵌套调用的方法,这样做使得整个程序体看上去严谨,舒服。整个程序中的BDC子程序,将二进制数转换为十进制数,嵌套调用DISP子程序输出十进制数。通过这几个及程序的协助,使得这个系统可以正常的运行。4.3调试过程及分析编写完代码后分别通过MASM、LINK程序,依次完成编译、连接过程,然后运行生成的exe文件,发现错误后在使用DEBUG工具调试程序寻找其中的算法错误。-7-5.心得体会5.1设计体会本次课程设计我有不少收获:在编程之前我查阅了不少资料,加深的对汇编语言的认识;在往后的几周上机实践中,对汇编语言源程序的编辑、汇编、连接和调试的全过程更加熟练;在不断地求解过程中,了解到了汇编语言的一些特点,感觉到汇编语言的执行效率非常高,由于汇编是对底层的操作,这一点决定了它在代码的产量方面不如一些高级语言。在这次课程设计中,无论是进行算法设计、代码编写,还是到具体的设计和调试,都需要对汇编知识熟练地掌握,还要有一种严谨的态度,这样才能少走许多弯路,节省大量时间。本次课程设计的成功完成,我感谢我的指导老师侯老师,是她及时发现了我编写的程序中存在的一些问题,我才能顺利完成本次课程设计。可以说,我的课程设计的顺利完成凝聚着老师的大量心血,在此向侯老师表示深深的感谢。当然,我也要感谢我的同学,程序的编写与他们的合作是分不开的,还有那些互联网上的朋友,他们毫不吝啬的将自己所掌握的知识拿出来资源共享,才能使我的部分功能模块得以实现,谢谢他们。5.2系统改进本程序有一些问题:1)不能进行混合的四则运算。2)能计算的数值范围有限。3)不能进行有关小数的四则运算。4)在进行除法运算时不能输出小数。5)由于主程序代码过长,条件转移指令无法实现,本程序只能进行循环计算,没有实现退出功能。在以后的时间里,我会改进一些问题,力争使该程序完美。-8-参考资料[1]李目海等编.《汇编语言》.山东大学出版社,2008.2[2]李敬兆等编.《汇编语言程序设计实验教程及习题解答》.中国科学技术大学出版社,2008.9[3]王爽等编.《汇编语言》.清华大学出版社,2003.5[4]曹加恒等编.《新一代汇编语言课程设计》.高等教育出版社,2003.6[5]杨路明等编.《汇编语言程序设计》.中南大学出版社,2005.8[6]詹仕华等编.《汇编语言程序设计》.中国电力出版社,2008.2[7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.中国电力出版社,2008.2[8]宋彩莉等编.《汇编语言程序设计学习指导》.西安交通大学出版社,2008.2