汇编语言计算器课程设计报告书

上传人:仙*** 文档编号:105542054 上传时间:2022-06-12 格式:DOC 页数:10 大小:240.50KB
收藏 版权申诉 举报 下载
汇编语言计算器课程设计报告书_第1页
第1页 / 共10页
汇编语言计算器课程设计报告书_第2页
第2页 / 共10页
汇编语言计算器课程设计报告书_第3页
第3页 / 共10页
资源描述:

《汇编语言计算器课程设计报告书》由会员分享,可在线阅读,更多相关《汇编语言计算器课程设计报告书(10页珍藏版)》请在装配图网上搜索。

1、可编辑版1. 设计目标运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,能够在DOS界面下进行简单的加、减、乘、除的简单计算。程序应有操作提示、输入和输出。自动闪烁光标,并提示输入信息。输入正确的数值等符号后可以进行正确的运算,程序计算其结果值并输出。程序无需查错功能,所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,最后结果以十进制数表示。且程序主界面需为一个由*组成边框的矩形窗口。汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:能够直接访问与硬件相关的存储器或I/O端口;能够不受编译器的限制,对生成的二进制代码进

2、行完全的控制;能够对关键代码进行更准确的控制;能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度地发挥硬件的功能。2. 软件设计2.1程序设计的基本思想主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。计算显示完毕后,按提示选择是否要继续计算,不选择继续则结束。对屏幕上输入字符串的接受,为INPUT语句段,见源代码,主要是将数字和运算符分开存放。MATCH子程序,子程序内有三次跳转,将运算符选择正确的语句进行计算。由于操作符只有+、-、*、/,没有涉及到括号,不

3、用考虑括号的匹配问题。流程图如下:图1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。首先根据输入调用对应的+、-、*、/四个函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几个模块服务的,大致的流程图如下图2:图2 子模块流程图2.2代码STACK SEGMENT STACK DB 200 DUPSTACK ENDSDATA SEGMENT OPS DB ? OPD DB ? OPER DB ? TIT DB* ,0DH,0AH DB* Made By * ,0DH,0AH ;0DH代表回车 DB* Tong Xin Ji Suan Qi Xiao Zu *

4、 ,0DH,0AH ;0AH代表换行 DB* Chang qian Zuo xin Wang xin * ,0DH,0AH DB* Wang da yong Tang kuan long * ,0DH,0AH DB* + - * / * ,0DH,0AH DB* Y,y:continue N,n:quit * ,0DH,0AH DB*Calculate*$,0DH,0AH Tip1 DB Input the first operator :$,0DH,0AH Tip2 DB Please input the oper :$,0DH,0AH Error DB Error! Plese input

5、 the oper again:$,0DH,0AH Tip3 DB Input the second operator :$,0DH,0AH Result DB -the result is:$,0DH,0AH Quit DB Choose repeat or quit? :$,0DH,0AH Tsave DB ?DATA ENDSCODE SEGMENT ASSUME CS: CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA ;初始化 DS:DX MOV DS,AXRemain: MOV BL,0 ;Oper初始状态 MOV OPS,BL MOV OPER,BL

6、 MOV OPD,BL LEA SI,OPS ;OPS的偏移地址送给SI LEA DI,OPD ;OPD的偏移地址送给DI CALL Enter LEA DX,TIT MOV AH,9 INT 21H CALL Input1 ;调用输入第一个操作数 CALL Operat ;调用输入操作符 CALL Input2 ;调用输入第二个操作数 CALL Calculate ;调用计算方法 CALL StrQuit ;调用判断程序再次执行 MOV AH,1 INT 21H CMP AL,Y JE Remain CMP AL,y ;选择Y返回Remain继续执行 JE Remain CMP AL,N J

7、E EXIT CMP AL,n JE EXIT EXIT:MOV AH,4CH ;若不是Y则结束 INT 21H ;输入操作数子程序-Input1 PROC NEAR CALL Enter LEA DX,Tip1 ;输入第一个操作数提示- MOV AH,9 INT 21H ;十进制输入提示BCDin1: MOV AH,1 INT 21H CMP AL,0DH JE EndBCDin1 ;等于回车则返回继续输入运算符 CMP AL,30H JB BCDin1 ; 9时转exitinD 退出 AND AL,0FH ;清除高位 MOV SI,AL INC SI LOOP BCDin1EndBCDin

8、1: CALL Enter ;回车换行 RET Input1 ENDPInput2 PROC NEAR CALL Enter LEA DX,Tip3 ;输入第二个操作数提示- MOV AH,9 INT 21H ;十进制输入提示BCDin2: MOV AH,1 INT 21H CMP AL,0DH JE EndBCDin2 ;等于回车则返回继续输入运算符 CMP AL,30H JB BCDin1 ; 9时转exitinD 退出 AND AL,0FH ;清除高位 MOV SI,AL INC SI LOOP BCDin2EndBCDin2: CALL Enter ;回车换行 RET Input2 E

9、NDP;输入操作符子程序-Operat PROC NEARReOperat: CALL Enter LEA DX,Tip2 ;输入操作符提示 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,+ JE OperSave ;若为+,则存在oper CMP AL,- JE OperSave CMP AL,* JE OperSave CMP AL,/ JE OperSave JMP OperErrorOperError: CALL Enter LEA DX,Error ;输入操作符的错误提示 MOV AH,9 INT 21H JMP ReOperatOperSave:

10、 MOV OPER,AL RETOperat ENDP;计算方法子程序-Calculate PROC NEAR CALL Enter ;回车换行 MOV BL,OPER CMP BL,+ JZ ADCProc ;若为加法,则转到adcProc CMP BL,- JZ SUBProc CMP BL,* JZ MULProc CMP BL,/ JZ DIVProcADCProc: CALL StrResult ;加法 MOV AL,OPS ADC AL,OPD CALL Displ JMP endCalculate SUBProc: ;减法 CALL StrResult MOV AL,OPS SU

11、B AL,OPD CALL Displ JMP endCalculateMULProc: ;乘法 CALL StrResult MOV AL,OPD MUL OPS CALL Displ JMP endCalculateDIVProc: ;除法 CALL StrResult MOV AH,0 MOV AL,OPS DIV OPD CALL Displ JMP endCalculateendCalculate: RETCalculate ENDPDispl PROC NEAR MOV Tsave,AL MOV AH,0 MOV AL,Tsave MOV BL,100 DIV BL ;除以100

12、CALL Output ;显示百位数 MOV AL,AH MOV AH,0 MOV BL,10 DIV BL ;除以10 CALL Output ;显示十位数 MOV AL,AH CALL Output ;显示个位数 RETDispl ENDPStrResult PROC NEAR LEA DX,Result MOV AH,9 INT 21H RET StrResult ENDPOutput PROC NEAR ;十进制输出 PUSH AX ADD AL,30H ;将AL中的十进制数变成ASCII码 MOV DL,AL MOV AH,2 INT 21H POP AX RETOutput END

13、P;回车换行子程序-Enter PROC NEAR MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H RETEnter ENDP;判断程序再次执行子程序-StrQuit PROC NEAR CALL Enter ;回车换行 LEA DX,Quit MOV AH,9 INT 21H RETStrQuit ENDP CODE ENDS END START3. 系统调试3.1测试目标在屏幕上显示一个由*组成边框的矩形窗口;自动闪烁光标,并提示输入信息;能够完成单项表达式的输入、显示和运算;编制并调试出程序。3.2测试方法及结果 单击开始,

14、启动运行,输入cmd,启动命令提示符,进入DOS系统。如下图: 图3 启动命令提示符源程序名存为qian.asm,在dos下进入F盘,再cd masm进入masm文件夹,再键入masm qianqian是源程序文件名提示是否更改文件名不改直接回车,系统会提示是否生成.lst文件和.crf文件直接回车跳过,这样就生成了qian.obj 键入link qianqian是源程序文件名,提示是否更改文件名不改直接回车提示是否生成.map和.lib文件直接回车,这样就生成了qian.exe,再在DOS下键入qian源程序文件名就进入程序执行。如图4:图4 执行方法在计算器内,输入数字测试本程序的正确与否

15、。按照提示输入第一个十进制数,如6,回车。下一步,会提示请输入运算符,如加+,回车。最后一步,输入第二个十进制数,如3,回车。则显示出其运算结果。如下图5所示:图5 实现加法运算同上,可实现减法、乘法、除法运算,分别如图6,图7,图所示8:图6 实现减法运算图7 实现乘法运算图8 实现除法运算运算完毕后,会提示是否继续下一个运算,输入Y则继续运算,并返回主界面,输入N则结束程序。当运算符输入不合法时,则会提示重新输入运算符,如下图9:图9 错误提示4. 总结设计的这个程序主要是进行表达式的四则运算,由于操作符只有+、-、*、/,没有涉及到括号,因此设计起来要容易一点,不用考虑括号的匹配问题。另

16、外,跳转时汇编语言的一大难点,再编程之前最好要画出流程图,这样在写跳转时不容易出错,且不会出现重复操作语句段。输入部分看似简单,实际要考虑到很多细。比如一开始没想到存入的数据可能会符号存进内存后的相同;如何判段存数算法应该结束,对应的存入数和符号。编写的五个子程序经编译、链接后,没有发现错误,可设计出的计算器程序出现一些不足,如本计算器只能进行一位十进制数的计算,也很少在计算的优先级,进制转化之间下功夫,致使计算器运算能力不足。还有本程序只能判断输入的运算符的合法性,不能判断输入的十进制数的正确与否,即使错误,也显示提示下一步的操作。参考文献1 詹仕华. 汇编语言程序设计M. 北京: 中国电力

17、出版社, 2008.2:73-1022 宋彩莉, 王禾. 汇编语言程序设计学习指导M. XX: XX交通大学出版社, 2008.2:45-873 李敬兆, 陈子旭. 汇编语言程序设计M.XX: 中国科学技术大学出版社, 2008.9:173-1974 钱晓捷, 周玲. 新汇编语言程序设计M. 北京: 电子工业出版社, 2006.3:101-1205 周佩玲, 彭虎, 傅忠谦. 微机原理与借口技术M. 北京: 电子工业出版社, 2007.1:113-1416 马春燕. 微机原理与接口技术基于32位机实验与学习辅导M. 北京: 电子工业出版社, 2007.1:23-707 何小海, 严华. 微机原理与借口技术M. 北京:科学出版社, 2006.7:143-1808 王爽, 胡雄. 汇编语言M. 北京: 清华大学出版社, 2009.9:29-709 曹加恒, 谢子殿. 新一代汇编语言课程设计M. 北京: 高等教育出版社, 2006.3:113-13810 杨路明. 汇编语言程序设计M. XX: 中南大学出版社, 2008.5:173-20310 / 10

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!