汇编语言 加减混合运算课件_第1页
汇编语言 加减混合运算课件_第2页
汇编语言 加减混合运算课件_第3页
汇编语言 加减混合运算课件_第4页
汇编语言 加减混合运算课件_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安徽省巢湖学院计算机与信息工程学院课程设计报告课程名称 微型计算机系统原理及应用 课题名称 实现加减混合运算 专业班级 11计本(3)班 学 号 1 1 0 1 1 2 1 4 姓 名 王能 联系方式指导教师 叶海燕 完成日期: 2014年1月 2日微机原理课程设计:实现加减混合运算目 录课程设计任务书I微机原理及应用课程设计成绩评定表IV目 录I一 设计任务描述11.1设计目的11.2设计题目1二 概要设计12.1设计主要内容12.2设计思路流程图22.3程序运行结果2三 程序代码3四 总结体会10五 致谢11- 1 -1、 设计任务描述1.1课程设计目的进行程序设

2、计的方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,打到独立编制和调试一定滚魔的汇编语言程序水平。1.2课程设计题目四则混合运算设计程序,实现从键盘上输入一个加减混合运算式,输入等号后,在下一行上显示十进制计算结果。显示示例:Input:3+5+7+8=23二、概要设计2.1设计主要内容根据题目的要求,该程序设计的关键是要根据四则运算中()、*、/、+、-、=的优先设置符号的权值,其中/、*、+、-、=的权值分别设置为4、4、3、3、1,然后根据权值大小进行运算。程序使用数字标志SIGN1、括号标志SIGN2

3、分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域 NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。可以把整个源程序大致划分为几个基本结构:程序加法、减法、乘法、除法、显示结果五个部分。首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先

4、级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?,用户输入y/n执行继续计算和退出操作。2.2 设计思路流程图开始AL=-AL=从键盘输入字符YAL=+从键盘输入加数并执行加运算NY从键盘输入加数并执行减运算从键盘输入加数并执行乘运算YAL=*从键盘输入加数并执行除运算NAL=/YNN输出结果Y结束2.3 程序运行结果输入要计算的式子,按等号输出结果,计算机提示是否继续输入,输入字符y,继续输入,键入n退出程序,如果键入字符为其他,则反回提示输入。三、程序代码- 10 -CODES SEGMENTASSUME CS:CODES,DS:DA

5、TAS,SS:STACKSNEXTLINE MACRO ;显示换行宏 MOV AH,2 MOV DL,10 INT 21H MOV AH,2 MOV DL,13 INT 21H ENDMSTART: MOV AX,DATAS MOV DS,AX MOV BX,0INPUT1: MOV AH,1 ;从键盘输入一个字符 INT 21H CMP AL,+ ;判断是否为+ JZ ADDITION CMP AL,- ;判断是否为- JZ SUBTRATION CMP AL,* ;判断是否为* JZ MULTIPLICATION CMP AL,/ 判断是否为/ JZ DIVISION CMP AL,= 判

6、断是否为= JZ RESULT CMP AL,58 判断输入是否为数字 JS L1 JMP INPUT1L1: CMP AL,47节 JNS L2 JMP INPUT1L2: SUB AL,48 如果输入为数字,将数值计入BX MOV CL,AL MOV AX,BX MOV CH,10 MUL CH ADD AL,CL MOV BX,AX JMP INPUT1 ADDITION: 输入+后,进入加法运算 MOV DX,0INPUT2: MOV AH,1 从键盘输入字符 INT 21HCMP AL,+ 判断是否为+ JZ L23 CMP AL,- 判断是否为- JZ L24 CMP AL,* 判

7、断是否为* JZ L25 CMP AL,/ 判断是否为/ JZ L26 CMP AL,= 判断是否为= JZ L27 CMP AL,58 判断是否为数字 JS L21 JMP INPUT2L21: CMP AL,47 JNS L22 JMP INPUT2 如果不是数字,则跳转到INPUT2L22: SUB AL,48 将输入字符转换为数值 MOV CL,AL MOV AX,DX MOV CH,10 MUL CH ADD AL,CL MOV DX,AX JMP INPUT2L23: ADD BX,DX 执行加运算 JMP ADDITIONL24: ADD BX,DX JMP SUBTRATION

8、L25: ADD BX,DX JMP MULTIPLICATIONL26: ADD BX,DX JMP DIVISIONL27: ADD BX,DX JMP RESULT SUBTRATION: 如果输入-,则执行减法 MOV DX,0INPUT3: MOV AH,1 INT 21H CMP AL,+ 判断是否为+ JZ L33 CMP AL,- 判断是否为- JZ L34 CMP AL,* 判断是否为* JZ L35 CMP AL,/ 判断是否为/ JZ L36 CMP AL,= 判断是否为= JZ L37 CMP AL,58 判断是否为数字 JS L31 JMP INPUT3L31: CM

9、P AL,47 JNS L32 JMP INPUT3L32: SUB AL,48 将字符转换为数值 MOV CL,AL MOV AX,DX MOV CH,10 MUL CH ADD AL,CL MOV DX,AX JMP INPUT3L33: SUB BX,DX 执行减法操作 JMP ADDITIONL34: SUB BX,DX JMP SUBTRATIONL35: SUB BX,DX JMP MULTIPLICATIONL36: SUB BX,DX JMP DIVISIONL37: SUB BX,DXJMP RESULTMULTIPLICATION: MOV DX,0INPUT4: MOV

10、AH,1 INT 21H判断是否为+判断是否为- CMP AL,+ JZ L43 CMP AL,- JZ L44 CMP AL,* 判断是否为* JZ L45 CMP AL,/ 判断是否为/ JZ L46 CMP AL,= 判断是否为= JZ L47 CMP AL,58 判断是否为数字 JS L41 JMP INPUT4L41: CMP AL,47 JNS L42 JMP INPUT4L42: SUB AL,48 将字符转换为数值 MOV CL,AL MOV AX,DX 将字输入数字加入数值 MOV CH,10 MUL CH ADD AL,CL MOV DX,AX JMP INPUT4L43:

11、 MOV AX,BX 将BX移入AX MUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP ADDITIONL44: MOV AX,BX 将BX移入AX MUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP SUBTRATIONL45: MOV AX,BX 将BX移入AX MUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BXJMP MULTIPLICATIONL46: MOV AX,BX 将BX移入AX MUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP D

12、IVISIONL47: MOV AX,BX 将BX移入AX MUL DX 与DX中的数进行乘运算 MOV BX,AX 将AX中的数值返回BX JMP RESULT DIVISION: MOV DX,0INPUT5: MOV AH,1 INT 21H 判断是否为+判断是否为-判断是否为*判断是否为/判断是否为=判断是否为数字 CMP AL,+ JZ L53 CMP AL,- JZ L54 CMP AL,* JZ L55 CMP AL,/ JZ L56 CMP AL,= JZ L57 CMP AL,58 JS L51 JMP INPUT5L51: CMP AL,47 JNS L52 JMP INP

13、UT5L52: SUB AL,48 MOV CL,AL MOV AX,DX MOV CH,10 MUL CH ADD AL,CL MOV DX,AX JMP INPUT5L53: MOV AX,BXDIV DX MOV AH,0 MOV BX,AX JMP ADDITIONL54: MOV AX,BX DIV DL MOV AH,0 MOV BX,AX JMP SUBTRATIONL55: MOV AX,BX DIV DL MOV AH,0 MOV BX,AX JMP MULTIPLICATIONL56: MOV AX,BX DIV DL MOV AH,0 MOV BX,AX JMP DIVI

14、SIONL57: MOV AX,BX DIV DL MOV AH,0 MOV BX,AX JMP RESULTRESULT: 显示结果 MOV CH,10 MOV CL,100R1: 将BX中的计算结果以十进制输出 MOV AX,BX DIV CL MOV DL,AL MOV DH,AH MOV AL,AH MOV AH,0 MOV BX,AX ADD DL,48 MOV AH,2 INT 21H MOV AH,0 MOV AL,CL DIV CH MOV CL,ALCMP CL,1 JZ R2 JMP R1R2: MOV DL,DH ADD DL,48 MOV AH,2 INT 21HS2:

15、 NEXTLINE LEA DX,STRING 询问是否继续输入 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,y 输入y则跳转到S1 JE S1 CMP AL,n 输入n则跳转到S3,即结束程序 JE S3 JNE S2 S3: MOV AH,4CH INT 21HCODES ENDS四、总结体会通过这次的课程设计,让我们对汇编语言有了更进一步的认识,加强了我们用汇编语言的能力。并经过修改,完成了简单的设计。 汇编语言程序设计是一门很抽象的科学,学起来也比较难,但随着学习的推进,以及上机编程,逐渐感到轻松,在这次课程设计中,让我更加熟悉了汇编语言的一些基本

16、的指令;掌握了汇编语言的一些基本的中断调用功能,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制;熟练的利用子程序和宏进行编程。 在设计过程中,不断对程序进行修改,改进,增强了自己分析问题解决问题的能力:在不断的调试中,也让自己发现了自己存在的一些错误以及一些调试时应注意的问题,同时也更深的理解了寄存器,存储器等工作原理以及一些指令执行后对它们的改变,例如,int指令会改变al的值,在编程时应注意这方面的问题。在编写过程中,让我深刻的体会到了科学的严谨性。有时一个逗号或者写错一个字母这样一点点小错误,就会产生很大的错误,导致调试的失败。 当设计一步步接近成功,每一个子程序的调试成功,都让自己感到喜悦,从中体会到编程的乐趣,有一种成就感,也让自己树立了信心,增强了对汇编语言程序设计的兴趣。五、致谢在这个课程设计

温馨提示

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

评论

0/150

提交评论