微机课程设计 简易计算器.docx
《微机课程设计 简易计算器.docx》由会员分享,可在线阅读,更多相关《微机课程设计 简易计算器.docx(11页珍藏版)》请在冰豆网上搜索。
微机课程设计简易计算器
《微机原理实践》课程设计报告
题目:
简易计算器
专业:
网络工程
班级:
1001
学号:
1030040158
姓名:
川失意
指导教师:
胡美娇
完成日期:
2012年月日
一、课程设计目的
1、加深对汇编语言理论和基本知识的理解,掌握DOS和BIOS系统功能调用,掌握运用汇编语言设计具有一定功能的软件的基本方法.
2、通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力
3、提高调试程序的能力
二、课程设计内容
3、设计一个简易计算器,可以对两个一位数进行加法和减法运算,例如1+2=3,8+9=17,8-5=3,4-9=-5。
'********************DisplayProgram********************
Theadditionandsubtractionoperationsoftwoone-digit,Input"=",thenoutputtheresult:
如果输入的不是数,提示出错,显示:
inputerror!
如果输入e,则退出程序。
如果输入c,则清屏。
三、课程设计过程
1、算法设计(画出算法流程图)
2、程序代码清单
DATASEGMENT
BUFFDB4DUP
(1)
JIEGUODB2DUP
(1)
STR0DB"",0DH,0AH,"$"
STR1DB"********************DisplayProgram********************",0DH,0AH,"$"
STR2DB"Theadditionandsubtractionoperationsoftwotwo-digit",0DH,0AH,"Input"=",thenoutputtheresult:
",0DH,0AH,"$"
STR3DB0DH,0AH,"Inputerror!
",0DH,0AH,"Pleaseinputagain!
",0DH,0AH,"$"
TUICHUDB0DH,0AH,"Pleasepressanykeytocontinue!
","$"
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,STR0
MOVAH,9
INT21H
LEADX,STR1
MOVAH,9
INT21H
LEADX,STR2
MOVAH,9
INT21H
LEASI,JIEGUO
LEABX,BUFF
START1:
MOVAH,1
INT21H
CMPAL,"E";输入为E或e时退出程序
JZEXIT
CMPAL,"e"
JZEXIT
CMPAL,"C";输入为C或c时清屏
JZQINGPING
CMPAL,"c"
JZQINGPING
CMPAL,"+";输入的字符不为+,-,=,0到9的字符时,则报错,是则存储
JNZLOOP2
JMPCUNCHU
ERROR:
LEADX,STR3
MOVAH,9
INT21H
JMPSTART1
CUNCHU:
;对输入的字符进行存储
MOV[BX],AL
INCBX
JMPSTART1
LOOP1:
CMPAL,"0"
JBERROR
CMPAL,"9"
JAERROR
SUBAL,30H
JMPCUNCHU
LOOP2:
CMPAL,"-"
JNZLOOP3
JMPCUNCHU
LOOP3:
CMPAL,"="
JZLOOP4
JMPLOOP1
LOOP4:
LEABX,BUFF
JMPPANDUAN
PANDUAN:
;判断为加法还是减法运算
CMP[BX+1],"+"
JZJIAFA
JMPJIANFA
JIAFA:
LEABX,BUFF
MOVDL,[BX];提取两个加数的数据
MOVAL,[BX+2]
ADDAL,DL
CMPAL,10
JAEJINWEI
ADDAL,30H
MOV[SI+1],AL
LEADX,[SI+1]
MOVAH,9
INT21H
JMPSTART
JINWEI:
SUBAL,10
ADDAL,30H
MOV[SI],31H
MOV[SI+1],AL
LEADX,[SI]
MOVAH,9
INT21H
JMPSTART
JIANFA:
MOVDL,[BX];提取被减数和减数的数据
MOVAL,[BX+2]
CMPAL,DL
JZZERO
JAFU
JBZHENG
ZHENG:
SUBDL,AL
ADDDL,30H
MOV[SI+1],DL
LEADX,[SI+1]
MOVAH,9
INT21H
JMPSTART
FU:
SUBAL,DL
MOV[SI],"-";结果为负数的输出(如13-22=-9)
ADDAL,30H
MOV[SI+1],AL
LEADX,SI
MOVAH,9
INT21H
JMPSTART
ZERO:
MOVDL,30H;结果为0的输出
MOVAH,2
INT21H
JMPSTART
QINGPING:
MOVAL,0;实现清屏功能
MOVBH,7
MOVCH,0
MOVCL,0
MOVDH,24H
MOVDL,79H
MOVAH,6
INT10H
MOVDX,0
MOVAH,2
INT10H
JMPSTART
EXIT:
LEADX,TUICHU;退出程序
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3、调试过程(包括实验过程中实验步骤,出现的问题,解决的方法,使用的实验数据等)
一、对设计的程序进行语法检查,检查程序中存在的语法错误。
二、对测试进行综合调试,对下载到芯片的程序进行功能检查,直到完成设计要求的功能。
4、系统运行结果截图
加减法结果:
乘除法结果:
其他字符输入结果:
按c键清屏结果:
5、结果分析
加法运算的结果都是正数,但需要考虑进位;
减法运算根据减数和被减数的大小,结果有正有负;
输入其他符号,则提示出错,不能进行;
按c键可以实现清屏功能;
经调试,基本上任务要求设计的所有功能都实现。
四、课程设计体会
两周的课程设计结束了,给我的总体感觉就是忙碌而充实,而且真正学到了一些东西。
另外,这次无论是设计个这程序还是写课程设计报告都让我学到了好多东西,有对课本知识更加深入的了解和掌握,也有对于流程图的设计以及绘制还有word的一些用法和排版等,都让我受益匪浅,不仅让我掌握了更多的知识,还让我领会到要把一件事情做好并真正有所收获还得靠自己独立地去完成并坚持不懈!