汇编语言 混合算术运算的实现.doc
《汇编语言 混合算术运算的实现.doc》由会员分享,可在线阅读,更多相关《汇编语言 混合算术运算的实现.doc(25页珍藏版)》请在三一办公上搜索。
1、常熟理工学院课程设计报告 课程设计报告课程 微机原理课程设计 题目 混合算术运算的实现 系 别 物理与电子工程学院 年 级 08级 专 业 电子科学与技术 班 级 三 学 号 04 06 10 11 学生姓名 章维 赵峰 张浩 张崇光 指导教师 居伟骏 职 称 讲师 设计时间 2011-4-18 2011-4-22 目录前言2第一章 题 目31.1题目名称31.2题目内容及要求3第二章 分析与设计42.1题目要求42.2程序功能拓展设想42.3方案设计与论证42.4程序结构框图等设计5第三章 汇编程序设计73.1代码结构分析73.2汇编代码设计73.2.1程序初始化73.2.2键盘输入模块83
2、.2.3输入数据判断93.2.4算术运算113.2.5运算结果输出133.3实验结果15第四章 总结与体会16参考文献17附录18前言电子数字计算机是20世纪最重大的科技成就之一。自1946年第一台电子计算机问世以来,计算机得到迅速发展,并已广泛应用于工农业生产、科学研究、国防及人们日常生活的各个领域。伴随人类进入21世纪,以高科技革命为支撑的信息化社会已经到来,以“信息”为主导的新兴产业正在全球经济领域掀起一场空前的革命。“知识”是这场革命的直接推动力,而计算机及其应用技术则是知识经济的基础,掌握计算机知识和应用能力的多少,已成为衡量现代人文化水平高低的一个重要标志。随着信息化时代的到来,计
3、算机技术的进一步发展和应用必将对社会发展和人类文明产生更大的促进作用,对社会政治、经济、文化和人类生活的各个方面都将产生巨大而深远的影响。1 “微机计算机原理及应用”是高等学校计算机及相关专业一门非常重要的专业基础课,同时也是一门发展迅速、与实践结合紧密的学科。基于计算机即微型机的微机原理课程设计是一项具有重要实践意义的课程设计。首先我们必须了解微机的指令系统。指令是计算机用以控制各个部件协调动作的指令。一台计算机所具有的全部指令称为机器的指令系统,它全面描述了微处理器的功能,因此在其他条件相同时,指令系统功能越强,计算机的功能就越强。而这次课程设计所采用的编程语言则是汇编语言,汇编语言是一种
4、采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址、常量或标量。助记符一般都是英文单词的缩写,便于识别和记忆。使用汇编语言编写的程序称为汇编语言源程序。汇编语言源程序一般不能由机器直接执行,而必须翻译成由机器代码组成的目标程序,这个翻译过程称为汇编。把汇编语言源程序翻译成目标程序的软件称为汇编程序。汇编语言与机器语言密切相关,它们之间有明显的对应关系。一条汇编语言指令对应一条机器语言代码,所以汇编语言和机器语言一样都是面向机器的语言。使用汇编语言进行程序设计能充分利用机器的硬件功能和结构特点,从而有效地加快程序的执行速度,减少程序占用的存储空间。所以汇编语
5、言大量用于编写计算机系统程序、实时通信程序和实时控制程序等。第一章 题 目1.1题目名称混合算术运算的实现1.2题目内容及要求题目内容:任意输入4个一位无符号十进制数,它们之间用“+”,“-”,“*”号任意连接成为一个简单的算术运算式,要求按照算术运算法则计算得到正确结果。要求有输入提示信息,并且当输入算式不符合要求时能够输出提示信息,并要求重新输入。此过程自动重复进行,直到用户键盘输入“$”符号时程序退出。第二章 分析与设计2.1题目要求1. 判断输入数字及运算符号正误,首字符为数字位,数字与符号间隔输入;如果输入有错误则应有相应错误提示并可重新输入;2. 判断算术运算的优先级,及乘法优先于
6、加和减法,而加法和减法优先级相同;3. 可在屏幕显示正确的运算结果;4. 程序可自动重复运行,直到输入“$”终止;5. 要求程序结构设计合理;6. 汇编语言语法正确,程序语句使用得当;7. 适当追求汇编语言的编程技巧;8. 适当优化程序代码,提高程序运行效率。2.2程序功能拓展设想1. 增加错误提示功能,如输入运算式超过4位等;2. 正确数据回显功能,即如果用户输入错误则将该次输入运算式前面正确输入部分重新显示,用户只需重新输入前一步输入错误的数据或符号;3. 对程序界面友好及功能完善的其它功能。2.3方案设计与论证1. 考虑到错误输入情况,如符号与符号不能连在一起,数字不能超过一位,第一位输
7、入的必须为数字等,在错误输入情况下有提示,并能重新输入;2. 在进行多位数字的混合运算时,乘法的优先权大于加法和减法,必须先找出乘号,然后对乘号两边的数进行乘法计算;3. 用“=”判断数字是否输入完毕,定义一个数据存储区存储数据,能从后向前检验“*”。当没有“*”时,按照“+、- ”运算符的左右顺序从左到右进行“ +、- ”运算,当最后遇到等号“ = ”时输出表达式的数值,然后再根据提示判断是否继续执行下一个四则运算表达式;4. 如果用户已经输入4个数字和3个符号,即运算式已经输入完毕,则等待用户输入“=”,输出运算结果;5. 如果用户输入错误,程序应该提示输入错误信息并能将用户之前输入的正确
8、数据,包括数字和符号重新输出到屏幕,直到用户输入正确,而不必因为一次错误输入就得重新输入运算式;6. 程序可以自动重复进行运算,这就要求每次运算后置零数据存储区;7. 由于运算的结果位数不确定,要设计一个能一位位显示结果的输出程序;8. 输出“=”则自动计算运算式并显示运算结果,输入“$”符号则退出程序;2.4程序结构框图等设计开始定义数据段定义堆栈段输出程序提示信息相关寄存器初始化输入数据“$”?结束程序“=”?含“*”?进行乘法运算进行顺序加减运算输出运算结果输入合法?保存输入数据输入完成?输出错误提示回显正确输入的数据YNYYNNYNNY图1 程序流程图第三章 汇编程序设计3.1代码结构
9、分析实现该程序功能的汇编代码可总体分为四个部分:用户键盘输入、数据判断、算术运算、系统屏幕输出计算结果。用户键盘输入功能实现可采取调用1号系统功能的方法输入单字符,然后根据需要决定是否将键盘输入的ASCII码转换为数字等。判断输入是否合法,程序设计相应的判断机制,确保识别用户输入的错误数据并能反馈相应出错提示,直到用户输入完正确数据。算数运算模块则通过程序判断运算优先级,以乘法为最高优先级,加法和减法优先级相同。运算结果的显示功能我们可以再次调用2号系统功能输出单字符,这里需要注意的是:如果运算结果是多位数,如何按顺序输出运算结果的每一位数。3.2汇编代码设计3.2.1程序初始化程序初始化的部
10、分主要包括数据段定义,堆栈段定义以及代码段开始部分的相关通用寄存器的初始化等。代码如下:START: MOV AX,DATAS MOV DS,AX DISP MESG_W ;显示欢迎界面BEGIN: LEA DI,SHUJU;装入有效地址 INC DI MOV AX,0 ;初始化寄存器 MOV BX,0 MOV CX,0 MOV DX,0 DISP MESG_I ;显示输入提示DISP MESG_E3.2.2键盘输入模块键盘输入模块主要调用1号系统功能,实现单字符的输入功能。代码包括两个部分,即数据的输入和符号的输入。且数字和符号交替输入,即用户第一次输入为数字,第二次输入为符号,第三次输入再
11、次为数字,如此往复输入,直到输入“$”程序终止,或“=”号输出运算结果。遇到用户已经输入4个数字和3个运算符号的情况则等待直到用户输入“=”,然后输出运算结果。代码如下:INPUT_NUMBER: ;数据输入 MOV AH,1 ;1号系统功能调用 INT 21H CMP AL,$ ;用户是否输入$ JE ZZ1 ;等于/结果为0转移 CMP AL,30H ;减法比较,和0比较 JB WRONG ;低于转移 CMP AL,39H ;和9比较 JA WRONG ;高于转移 JMP SAVE_N ;用户输入合法,保存数据INPUT_SIGN: ;符号输入 MOV AH,1 ;1号系统功能调用 INT
12、 21H CMP AL,$ ;用户是否输入$ JE ZZ1 ; CMP AL,3DH ;与等于号(=)比较 JE ZZ2 ;输出运算结果 CMP CX,0AH ;用户已经输入4个数据和3个符号JA WRONG ;错 CMP AL,2CH ;去掉逗号 JE WRONG CMP AL,2AH ;乘 JB WRONG ;低于转移(ASCII表中符号所在区域,去掉符号中间的逗号) CMP AL,2DH ;减 JA WRONG ;高于转移 JMP SAVE_S ;用户输入合法,保存数据3.2.3输入数据判断包括错误信息的提示和数据的存储。待输入数据后判断输入数据是否为“$”,是则退出程序,不是则继续判断
13、是否为“=”,是则转运算程序,并显示运算结果。如果不是则判断该次输入是否符号要求,即在要求输入数字的时候应该输入数字,在要求输入符号的时候输入运算符号。用户输入合法则保存数据,并准备下一个数据输出,如果用户输入不合法则有相关错误提示并回显正确输入的数据,让用户继续上一个输入。代码如下:SAVE_N: ;保存数字 XOR AH,AH ;清零AH MOV DI,AH INC DI SUB AL,30H ;减30H,将ASCII码值转为运算数据 MOV DI,AL ;将数据保存 INC DI ADD CX,2 ;存储空间+2 JMP INPUT_SIGN ;转符号输入SAVE_S: ;保存符号 MO
14、V DI,AL ;将符号保存 INC DI INC CX; JMP INPUT_NUMBER ;转数据输入ZZ1: JMP JIESHUZZ2: JMP OUTPUTWRONG: DISP MESG_R ;显示出错信息 DISP MESG_E PUSH CXOUT_NUM: SUB DI,CX INC DIMOV DL,DI ADD DL,30H ;转成ASCII码显示 MOV AH,2 ;2号系统功能调用 INT 21H ADD DI,CX DEC DI ;DI返回原值 SUB CX,2 CMP CX,0 JE REIN_SIG SUB DI,CX MOV DL,DI MOV AH,2 ;2
15、号系统功能调用,输出单字符 INT 21H ADD DI,CX ;DI返回原值 DEC CX CMP CX,0 JE REIN_NUM JMP OUT_NUMREIN_NUM: POP CX JMP INPUT_NUMBERREIN_SIG: POP CX JMP INPUT_SIGN DISP MESG_E JMP BEGIN3.2.4算术运算算术运算其中包括乘法优先的判断和加减法的运算。先找到乘法运算符的位置,将其前后位置的数相乘,并存在前面数的位置上。待乘法运算完成后,按顺序实行加减法的运算。将乘法运算完成后的第一个数据放在RESULT变量中,找到运算符的位置,将RESULT变量与运算符
16、后一位的数进行运算。运算过程代码如下:YUNSUAN PROC NEAR ;运算过程YUNSUAN定义 LEA SI,SHUJU ;装入数据有效地址 INC SIJUDGE:SUB DI,3;MOV CL,DI CMP CL,2AH ;和*号比较 JE CF ;乘法转移 CMP BYTE PTRDI,M JE P1 JMP JUDGECF: ;乘法运算 XOR AX,AX XOR BX,BX INC DI XCHG BH,DI ;交换指令 XCHG BL,DI+1 SUB DI,2 XCHG AL,DI ;被乘数 XCHG AH,DI-1 MUL BX ;乘数和积存放 MOV DI,AL MO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 混合算术运算的实现 混合 算术 运算 实现
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2388581.html