资源描述
信息学院课程设计题 目: 2位数计算器程序设计 _姓 名: _ _学 号: _ _班 级: 课 程: 汇编语言 _任课教师: _ 课程设计任务书及成绩评定题 目 2位数计算器程序设计课程设计的任务及要求 任务:利用汇编语言编写计算器程序实现能完成两位数的加、减、乘、除运算功能要求:熟悉汇编指令、顺序程序的编写方法 学会使用DOS功能调用、子程序调用完成相关操作课程设计所需的软件、硬件等 软件:MASM软件硬件:可以运行汇编语言的计算机课程设计进度计划第一天熟悉软件环境第二天绘制程序流程图第三天编写程序代码第四天用DEBUG调试运行程序第五天编写课程设计说明书任课教师评语 成绩: 教师签名: 日期: 目 录摘要21设计目的22概要设计3 2.1系统总体分析3 2.2程序流程图33详细设计4 3.1主程序及子程序说明4 3.2程序代码编写44程序调试64.1运行界面分析64.2算法的分析64.3调试过程及分析65心得体会7 5.1设计体会7 5.2系统改进7参考文献8摘 要本次课程设计的题目是用汇编语言实现一个简单的2位数计算器,要求:编写一个程序,可实现对两个2位十进制数进行加、减、乘、除四则运算的计算工具。计算器是最简单的计算工具,要想用汇编语言实现它就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及子程序的调用等汇编语言知识进行综合运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块,当实现各个程序模块后,通过DOS功能调用完成运算结果的输出显示,最终实现一个简单的计算器功能。1.设计目的通过本次的课程设计,使自己加深对汇编语言的了解,应用汇编语言等所学相关知识及查阅资料,完成简易2位计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能里的目的。通过本次课程设计的训练,可以使我在基本思路和基本方法上对基于8086/8088CPU的汇编语言程序设计有一个比较感性的认识,并具备一定程度的设计能力,从而能够熟练掌握编写汇编语言源程序的基本方法和基本构架,学会编写顺序结构、分支结构、循环结构和子程序的汇编程序,掌握程序中数据的产生与输入输出的方法以及一些关于汇编语言更深层次方面有初步的认识。2.概要设计2.1 系统总体分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。本程序使用了DOS功能调用、子程序嵌套调用的方式实现了代码的较好的可读性,使程序看起来结构严谨。2.2程序流程图 本程序的流程图如图所示:开始将数据的ASCII码转换为对应的二进制数值将符号保存至AL中AL为+?加运算AL为-?AL为*?AL为/?减运算乘运算除运算输入计算公式将计算结果转换成对应的ASCII码输出计算结果继续?结束流程图3.详细设计3.1 主程序及子程序说明主程序:主要完成程序的主体框架结构,提供人机交互功能。子程序:主要完成对数据的加工,处理和输出。3.2 程序代码编写代码如下:STACK SEGMENT STACKDW 200 DUP(0)STACK ENDSDATA SEGMENTBUF DB 7DB 0DB 7 DUP(0)MSG DB 10,13,$MSS DB .$W1 DB Input error!,10,13,Please to 01+02 form input:$TS DB input01+02=:,10,13,$XS DB -2 digits Calculator-$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX LEA DX,XS MOV AH,9 INT 21HB1:LEA DX,MSG MOV AH,9 INT 21H LEA DX,TS MOV AH,9 INT 21HB2:MOV AH,10 LEA DX,BUF INT 21H LEA DX,MSG MOV AH,9 INT 21H MOV BH,BUF+2 MOV BL,BUF+3 MOV CH,BUF+5 MOV CL,BUF+6 SUB BH,30H SUB BL,30H SUB CH,30H SUB CL,30H MOV DH,10 MOV AH,0 MOV AL,BH MUL DH MOV BH,0 ADD BX,AX MOV AH,0 MOV AL,CH MUL DH MOV CH,0 ADD CX,AX MOV AL,BUF+4 CMP AL,+ JZ L1 CMP AL,- JZ L2 CMP AL,* JZ L3 CMP AL,/ JZ L4 LEA DX,W1 MOV AH,9 INT 21H JMP B2L1:ADD BX,CX CALL BDC JMP E1L2: CMP BX,CX JB Z21SUB BX,CXJMP Z22 Z21: MOV AH,2 MOV DL,- INT 21H SUB CX,BXMOV BX,CXZ22: CALL BDC JMP E1L3:MOV AH,0 MOV AL,BL MUL CL MOV BX,AX CALL BDC JMP E1L4: MOV DX,0 MOV AX,BX DIV CX MOV BX,AX CALL BDC CMP DX,0 JZ E1 LEA DX,MSS MOV AH,9 INT 21H MOV BX,DX CALL BDCE1:JMP B1MOV AH,4CH INT 21HBDC PROCPUSH CXPUSH DX CMP BX,10000 JNB P1 CMP BX,1000 JNB P2 CMP BX,100 JNB P3 CMP BX,10 JNB P4 JMP P5 P1: MOV CX,10000 CALL DISP P2: MOV CX,1000 CALL DISP P3: MOV CX,100 CALL DISP P4: MOV CX,10 CALL DISP P5: MOV CX,1 CALL DISPPOP DXPOP CXRETBDC ENDPDISP PROCPUSH AXPUSH CXPUSH DX MOV AX,BX MOV DX,0 DIV CX MOV BX,DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21HPOP DXPOP CXPOP AXRETDISP ENDPCODE ENDS END START4.程序调试4.1运行界面分析运行界面如图所示:在提示input01+02=:处按照格式输入运算公式,输入完成后敲击回车键,输入无误后在下一行显示运算结果。4.2算法的分析本程序使用了子程序的嵌套调用的方法,这样做使得整个程序体看上去严谨,舒服。整个程序中的BDC子程序,将二进制数转换为十进制数,嵌套调用DISP子程序输出十进制数。通过这几个及程序的协助,使得这个系统可以正常的运行。4.3 调试过程及分析 编写完代码后分别通过MASM、LINK程序,依次完成编译、连接过程,然后运行生成的exe文件,发现错误后在使用DEBUG工具调试程序寻找其中的算法错误。 5.心得体会5.1 设计体会本次课程设计我有不少收获:在编程之前我查阅了不少资料,加深的对汇编语言的认识;在往后的几周上机实践中,对汇编语言源程序的编辑、汇编、连接和调试的全过程更加熟练;在不断地求解过程中,了解到了汇编语言的一些特点,感觉到汇编语言的执行效率非常高,由于汇编是对底层的操作,这一点决定了它在代码的产量方面不如一些高级语言。在这次课程设计中,无论是进行算法设计、代码编写,还是到具体的设计和调试,都需要对汇编知识熟练地掌握,还要有一种严谨的态度,这样才能少走许多弯路,节省大量时间。本次课程设计的成功完成,我感谢我的指导老师侯老师,是她及时发现了我编写的程序中存在的一些问题,我才能顺利完成本次课程设计。可以说,我的课程设计的顺利完成凝聚着老师的大量心血,在此向侯老师表示深深的感谢。当然,我也要感谢我的同学,程序的编写与他们的合作是分不开的,还有那些互联网上的朋友,他们毫不吝啬的将自己所掌握的知识拿出来资源共享,才能使我的部分功能模块得以实现,谢谢他们。5.2 系统改进本程序有一些问题:1) 不能进行混合的四则运算。 2) 能计算的数值范围有限。3) 不能进行有关小数的四则运算。4) 在进行除法运算时不能输出小数。5) 由于主程序代码过长,条件转移指令无法实现,本程序只能进行循环计算,没有实现退出功能。在以后的时间里,我会改进一些问题,力争使该程序完美。参考资料1李目海等编.汇编语言.山东大学出版社,2008.22李敬兆等编.汇编语言程序设计实验教程及习题解答.中国科学技术大学出版社,2008.93王爽等编.汇编语言.清华大学出版社,2003.54曹加恒等编.新一代汇编语言课程设计.高等教育出版社,2003.65杨路明等编.汇编语言程序设计.中南大学出版社,2005.86詹仕华等编.汇编语言程序设计.中国电力出版社,2008.27詹仕华等编.汇编语言程序设计习题解答及课程设计、设计辅导.中国电力出版社,2008.28宋彩莉等编.汇编语言程序设计学习指导.西安交通大学出版社,2008.2
展开阅读全文