微机课程设计报告-计算器的实现(william).doc

微机课程设计报告-计算器的实现(william).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机课程设计报告-计算器的实现(william)

微机课程设计报告 (2010—2011年度第二学期) 名称: 微机课程设计报告_______ 学号: 200810314302 _______ 学生姓名: _林伟炼_______ 导师: 张敏 成绩:______________________ 日期:2010年月日 一、课程设计的目的 (1)掌握汇编语言各种基本指令 (2)熟悉DOS系统功能调用方法以及BIOS系统系统功能的调用方法 (3)学会使用MASM汇编软件,并会对程序的开发,并且进行调试以及运行功能 二、课程设计的内容 (1)设计内容 设计一个能实现四则运算的计算器,将键盘输入的表达式预存入一缓冲区内,数值与运算符分开存储,数值存放在数据段中标号为NUM的缓冲区中,而运算符则存放在数据段中标号为MARK的缓冲区中。然后对两个缓冲区的字符进行读取判断,当读到一个有效地表达式时,进行相应的运算后,以十进制数表示运算结果。 (2)目标 要求该程序接受从键盘输入的十六进制数,可执行整数的加减乘除运算,还可实现多括号嵌套运算,计算结果以十六进制输出,以十进制数显示。 (3)设计框架 (4)程序解析 本程序中有两个宏定义,分别为字符串输出DISP、给运算符赋权值CHOICE;三个子程序,分别为四则运算子程序MATCH、定义优先级子程序ADVANCE以及回车换行子程序CR;同时对于输入字符的判断正误,并且附带有帮助文档可供参考。 1.主函数MAIN 在主函数中,运用指令LEA DI,NUMB ; LEA SI,MARK ;将NUMB的偏移地址传送到DI,NUMB存储单元中存放输入的数值;将MARK的偏移地址传送到SI,MARK存储单元中存放输入的运算符输出已定义的字符串。输出数据段定义的字符串,数据寄存器AX、BX、CX、DX清零。当输入的是数字时,SIGN1自动加1,接着进行数值处理;当处理的是运算符号时,则进行括号是否匹配等相关操作;而在输入的过程中,同时会对输入的字符进行判别,如果是无规则字符,则会出错,并且可以通过c进行清除数据,也可以通过h来取得帮助文档,或者通过q退出程序。 2.四则基本运算子函数MATCH 四则运算子函数基本思想是先乘除后加减。对运算符的优先级进行判断,优先级高的,先进行运算。乘除的优先级一样,但高于加减的优先级。当遇到等号时,意味着所有的乘除处理完毕,可以进行加减运算。 3. 定义优先级子程序ADVANCE 定义运算符的优先级,‘(’的优先级为5,‘)’的优先级为1,‘*’、‘/’的优先级为4,‘+’、‘-’的优先级为3,‘=’的优先级为0。定义完毕,则返回。 (5)程序设计的主要思想 1、对输入先进行处理,之后进入数据和运算符处理阶段; 2、判断是否有等号输入,有且表达式为有效输入,则输出结果;不是等号,则判断输入的是运算符还是数值; 3、若为数值,则进行数值转换; 4、若为字符,对字符进行优先级赋值,并且对括号进行相应的匹配操作; 5、配对,则判断优先级; 6、判断是否左括号,有,则判断是否有右括号; 7、有,则对优先级进行比较运算,最终输出结果。 三、心得体会 这门课程在检验我们学习成绩的同时,也检验了我们的学习的效果。用了差不多一周的时间设计能实现四则运算的计算器,其中用到了微机中所学的知识,但在程序运行过程中总是出现这样那样的问题,导致程序错误,例如:程序代码打错,理解错了知识点,对微机内部结构理解不透彻。但在与同学的讨论和请教指导老师的过程中,问题都能一一的被解决。通过这次课程设计,更加深了我对汇编语言的使用技巧。汇编语言作为一种低级语言,编写程序起来很吃力。故选择正确的设计方法尤为重要。这次用了不少时间,也把之前学的x86汇编语言给恰当的应用上,即使会有不少的遗憾和缺陷,但是能够学习到更多有价值有意义的知识,是很不错的了! 附件 程序代码 ;----------------------------------------------------------------------------- ;--------------------***数据段定义***----------------------------------------- DATA SEGMENT STR1 DB 0AH,0DH, '|---------------------------------------------------|$' STR2 DB 0AH,0DH, '| |$' STR3 DB 0AH,0D

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档