- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录
1 设计目的 1
2 概要设计 1
2.1 系统总体分析 1
2.2 主模块框图及说明 2
3 详细设计 3
3.1 主模块及子模块说明 3
3.2 各模块详细设计 3
3.2.1 判定运算符模块设计 3
3.2.2取运算数模块 3
3.2.3计算模块 4
3.2.4结果处理模块 5
3.2.5输出模块 5
3.2.6错误处理模块 6
4 程序调试 7
4.1 运行界面分析 7
4.2 调试过程及分析 7
5 心得体会 8
5.1 设计体会 8
5.2 系统改进 8
参考文献 10
附 录 11 实现加减乘除四则运算的计算器
1 设计目的
汇编语言是继机器语言后出现的计算机程序设计语言,是计算机所能提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特征并能够直接控制硬件的惟一语言。因而了解之一语言的特性,并熟练掌握这一语言并应用于开发中便是计算机专业学生所必需掌握的技能之一。
本课程设计通过加减乘除四则运算计算器的设计,增强对于汇编语言寄存器、指令、伪指令、中断等的理解。可通过编写的汇编程序完成基本的加减乘除四则运算。
主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:
C:\tasmjs 3+2
5
2 概要设计
2.1 系统总体分析
四则运算计算器应当实现对用户输入表达式的处理。根据用户输入的表达式,完成加减乘除四则运算。程序自动判定表达式输入,并完成对于输入的16进制数的转换,同时计算结果并以10进制数输出。对于异常情况程序应当进行处理,保证程序的正确运行。
设计一个计算器,在DOS界面下输入程序名 表达式可直接输出运算结果。例如在DOS界面中输入JS 3+6,可直接输出9。程序接受16进制数输入,以十进制数输出运算结果。对于输出错误情况,程序自动给出错误提示,若输入的格式有误,程序给出“JS Expression [10]”(即输入样例)提示,若输入的表达式有误,程序给出“Error in expression !”(即表达式错误)提示。程序需根据用户输入的表达式自动提取出运算符和操作数,之后根据用户输入的操作符进行四则运算,后将寄存器中存储的二进制数转换为10进制数输出。程序应自动判断用户输入表达式的正确性,若输入的表达式有误,程序应输出错误提示后退出,防止因输入错误造成的程序崩溃。
程序流程图如下:
2.2 主模块框图及说明
3 详细设计
3.1 主模块及子模块说明
模块设计是程序编制中的重要环节。将复杂的程序模块化有助于程序的调试和修改,同时极大的方便了编程人员对于程序的调整。
在本程序中,将四则运算计算器分为了判定运算符模块,取运算数模块,计算模块,结果处理模块,输出模块和错误处理模块。以下对这几个模块分别进行详细叙述。
3.2 各模块详细设计
3.2.1 判定运算符模块设计
判定运算符子程序主要通过调用判定加减运算符子程序和判定乘除运算符子程序完成对于运算符的判定。在判定运算符子程序中,通过LODSB取输入串,之后通过CALL指令调用判定加减运算符子程序ISJJ,若判定不是加减运算,则程序顺序执行判定是否为乘除运算。在加减、乘除判断子程序中,采用CMP指令判定运算符情况。并根据运算符情况条转至相应的计算子程序。
注意,在此部分中考虑到用户输入的除法运算符可能有“\”或“/”两种情况,故在乘除判定子程序中分别考虑了两种情况的判定,保证程序的健壮性,使程序不会因输入错误产生错误提示。
故有如下指令:
CMP AL,*
JZ ISYSF1 ;*判定,若为/则转制*/\运算
CMP AL,/
JZ ISYSF1 ;/判定,若为/则转制*/\运算
CMP AL,\
3.2.2取运算数模块
取运算数模块主要用来将参与计算的运算数取出。通过LODSB载入串后,程序判定输入的是“1”-“9”间的数还是“A”-“F”间的数(输入数以十六进制表示)并进行相应的处理,通过CMP指令判定输入的运算数类型,将其对应的ASCII码转换为数值,通过寄存器寻址方式将其数值(二进制)保存在DX:AX寄存器中。
具体实现如下(部分代码省略,见附录1):
AND AX,0FH
SHL DI,1
RCL DX,1
MOV BX,DI
MOV BP,DX
SHL DI,1
RCL DX,1
SHL DI,1
RCL DX,1
JCXZ DATE3
SHL DI,1
RCL DX,1
Jmp sh
您可能关注的文档
最近下载
- 2011届高考化学一轮复习专题模拟检测:专题5_氮族元素及其化合物.doc VIP
- Unit6大单元教学整体单元分析课件人教版九年级英语全册.ppt
- 教育信息化背景下跨学科教学资源的数字化建设.docx
- 城镇直埋供热管道电预热安装施工工法(技术方案).pdf VIP
- 2014造口治疗师培训个案发展计划及产品册造口学校.pdf VIP
- 标准化乡镇卫生院制度.doc
- 2026年湖南科技职业学院单招职业技能考试必刷测试卷完美版.docx VIP
- 2024年9月8日贵州省黔西南州州直遴选(事业单位考聘)笔试真题及答案解析.doc VIP
- 2025年兵棋章节答案.docx VIP
- 酒店工程部计件量化方案(3篇).docx VIP
文档评论(0)