




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程 微机原理课程设计 题目 混合算术运算的实现 系 别 物理与电子工程学院 年 级 08级 专 业 电子科学与技术 班 级 二 学 号 学生姓名 指导教师 居伟骏 职 称 讲师 设计时间 2011-4-2 2011-4-8 绪论2第一章 混合算术运算的分析和设计21.1混合算术运算的分析21.2 混合算术运算的设计31.2.1 对输入信息的判断41.2.2 算术的运算51.2.3 结果的输出62.1 程序汇编72.2 程序运行的结果显示如图7第三章 实训总结83.1 实训总结8主要参考文献10附录10绪论此次实训的内容为任意输入4个一位无符号十进制数,它们之间用“+”,“-”,“*”号任意连接成为一个简单的算术运算式,要求按照算术运算法则计算得到正确结果。要求有输入提示信息,并且当输入算式不符合要求时能够输出提示信息,并要求重新输入。此过程自动重复进行,直到输入“$”符号时程序退出。本设计是利用汇编语言来实现算术运算,整个程序代码主要分为三个模块,即输入判断、运算、结果输出。利用汇编程序来实现混合算术运算时遇到的问题主要有怎样判别运算的优先等级、怎样判别符号的优先等级、不能连续输入数字和符号、首位必须是数字等等的问题。在本实训设计中将一一解决这些问题。第一章 混合算术运算的分析和设计1.1混合算术运算的分析设计题目要求有:当运行程序时有必要的输入提示信息、当输入算术不符合要求时能够输出提示信息并要求重新输入、整个运算过程能够自动重复进行至输入“$”符号时退出程序。根据这些要求,我们对课题的初步分析是首先对输入的信息限定在一定的范围之内,保证输入的信息是题目要求的数字或者符号。设置两个存储区NUMB和MARK,前者用来存储数字,后者用来存储符号。再设置两个判断标志SIGN1和SIGN2,SIGN1用来保证不能连续输入数字和首位不能是符号,SIGN2保证程序运行时不能连续输入运算符号。例如当连续输入数字或者符号时,结果中会有输出提示信息:YOUR INPUT IS WRONG PLEASE AGAIN。当输入符号满足条件时,对符号设置优先级,并将其权值保存在符号存储区中,当下一个符号要存储到符号存储区中时,现与前者进行比较如权值大于前者那么地址下一位存储,否则将前者的运算先进行计算并保存刚才的符号,数字存储区地址是随着符号存储区地址而变化的,直到当输入是“=”号时跳转到输出程序输出结果,然后继续接下来的运算直到输入 “$”时结束程序!1.2 混合算术运算的设计整个程序代码编写的思路可以通过下面的流程图1.2.1清晰的看出。 图1.2.1 混合算术运算流程图1.2.1 对输入信息的判断INPUT: ;对输入进行判断 MOV AH,1 INT 21H CMP AL,24H ;判断是否是$,是就退出程序 JE J_SHU1 CMP AL,3DH ;判断是否是=号,是就跳转到PD JE JUD CMP AL,2AH ;判断是否是*号 JE JUD CMP AL,2BH ;判断是否是+ JE JUD CMP AL,2DH ;判断是否是- JE JUD CMP AL,30H ;判断是否小于0 JB BC CMP AL,39H ;判断是否大于9JA BC此段代码的作用就是将输入的信息限定在一定的范围之内,保证输入的是“*”、“+”、“”、“=”,以及数字09,从而更好的满足题目的要求。1.2.2 算术的运算MATCH PROC NEAR PUSH AX XOR AX,AX XOR BX,BX CMP CL,2AH ;乘法运算 JNE NEXT1 SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI MUL BX MOV DI,AX ADD DI,2 JMP FINISHNEXT1:CMP CL,2BH ;加法运算 JNE NEXT2 SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,2 JMP FINISHNEXT2:CMP CL,2DH ;减法运算 JNE FINISH SUB DI,2 XCHG BX,DI SUB DI,2 SUB DI,BX ADD DI,2FINISH: POP AX RETMATCH ENDP此段代码的作用是实现加、减、乘之间的算术运算。1.2.3 结果的输出OUTPUT2: ;输出程序 SUB DI,2 CMP WORD PTRDI,0 ;判断结果的正负 JGE A NEG WORD PTRDI ;取补码 MOV DL,- MOV AH,2 INT 21HA: MOV BX,1000 ;AD是将运算结果按位取出并转化成ASCII码在屏幕上显示 MOV CX,4 MOV SI,0B: MOV AX,DI CWD DIV BX MOV DI,DX CMP AL,0 JNE C CMP SI,0 JNE C CMP CX,1 JE C JMP DC : MOV DL,AL ADD DL,30H MOV AH,2 INT 21HD: MOV AX,BX MOV DX,0 MOV BX,10 DIV BX MOV BX,AXLOOP B此段代码的作用是将运算结果按位取出并转换成ASCII码在屏幕上显示第二章 程序的汇编和运行2.1 程序汇编混合算术运算整个程序代码编写完时,便进入了汇编程序。在汇编时也遇到了语法(汇编程序不能识别的语句)、指令跳转的范围(图2.1.1)、指定了非法类型(例如对一个过程指定BYTE类型,而不是NEAR或FAR)、使用寄存器出错、操作数类型说明等等问题。二解决这些问题就是在汇编过程中给出提示出错的地方,然后在返回到代码中对错误的地方进行一一仔细检查和认真思考。图2.1.12.2 程序运行的结果显示如图图2.2.1 首位输入运算符有错误提示图2.2.2 混合算术运算图2.2.3 输入“$”时程序退出第三章 实训总结3.1 实训总结一个星期的微机原理课程设计就快要结束了,这期间有快乐有忧伤。由于微机原理这门课我们是上学期学的,所以这次的课程设计对我们来说还是有些难度的,毕竟许多知识因为掌握的不够牢靠都已经还给老师了,所以开始时我们并没有太大的信心。但学校这样安排肯定是有其中的道理的,我们也就只管静下心来好好做课程设计的了。我们这一组的设计题目是混合算术运算的实现,也就是用汇编语言来设计一个简易的计算器。拿到题目要求,按照我们一贯的思路,首先好好审题,认真读懂题目要求,明白我们所要设计的程序具体应该实现什么样的功能理解这些之后,就是上网看看有没有什么可以帮助我们更好的解决问题的资料,找一些类似的设计资料来学习一下,看看别人的思路,看看我们可以从中借鉴哪些好的方法等等。很幸运的,我们在网上找到了一位网友上传的关于四则运算的设计报告,其中包含有流程图和源程序等,由于源程序过长,我们就先看了下他的流程图,大概理解了他那个题目的要求,然后我们准备也按他的思路来做,毕竟他的那个思路还是相当明朗的。我们先尝试了一下他的程序,发现汇编后有错误报告,后来经过我们查资料研究出来这个错误是由跳转指令jump产生的,由于源程序过长,jump所在的行数与它所要跳转过去的长度所隔甚远,导致跳转不到应该执行的指令,然后我们在中间增添必要的跳转中转站来解决了这个问题。这个问题解决之后他的程序可以运行了,但还是有很多错误,不过所幸我们已经领会了这个设计思路了,这也是我们学到的只是吧!大概理清了自己的思路,下面我们开始编写代码,虽然网友的代码有错误,但可以供我们借鉴的还是有不少的,首先他的程序框架就很好啊!所以我们也懒得自己再去重新构造框架了,直接在这个网友的基础上改变了若干个指令来实现我们自己所需要的功能。这个过程其实是很痛苦的,偷懒还是要受惩罚的,因为不是我们自己编写的代码,所以有些语句我们还得花时间去理解它们,正是为了这个,我们的清明假期过的并不是那么的轻松。群策群力,集合着我们大家的智慧结晶,我们终于在修改、尝试、修改中不断完善代码,最终达到了设计要求的功能。虽然我们很开心,觉得我们就快大功告成了,但因为老师的一句话,我们小组成员犹如被霜打过的茄子一样,老师过来才看了两行,就直接说:“你们这个是抄的啊!”虽然一班有人和我们做同一个课题,但我们也是将信用的,老师您说不能相互抄袭,我们怎么可能明知故犯呢?他们的程序我们压根就没看过,或许只网上有这么一个版本,所以出现了雷同的现象,但这个设计真的是我们自己在学习掌握的基础上自己完成的啊!虽然老师并没有承认我们,但我们自己承认自己,我们觉得这次实训的精髓我们领悟了,我们问心无愧。虽然我们的程序仍然有这样或那样的缺点和不足,但它仍然是符合了题目的要求,只是在源程序上显得比较繁琐,我们尽力想将代码改的精简一些,但往往弄巧成拙,结果不是太理想。这次实训不光是对我们所学知识的一个检验,更是对我们思维方式和解决问题的能力的一个磨练,谢谢老师的指导,我们在课程设计中检验自我,完善自我,有了长足的进步!主要参考文献1、 微型计算机原理及应用技术(第二版)2、 温冬婵、沈美明:清华大学出版社,IBM PC 汇编语言程序设计教程附录混合算术运算程序代码DATAS SEGMENT STR1 DB 0AH,0DH, WELCOME YOU ! $ MESG DB 0AH,0DH,INPUT: $ SIGN1 DW 0 ;判断数字标志位 SIGN2 DW 0 ;判断符号标志位 NUMB DW 10 DUP(0) ;数字存储区 MARK DB M ;符号存储区 DB 10 DUP(0) ERROR DB YOUR INPUT IS WRONG PLEASE AGAIN$ DATAS ENDSDISP MACRO STR ;宏定义,显示信息 LEA DX,STR MOV AH,9 INT 21H ENDMCHOICE MACRO ASC,HAO,H ;宏定义,设置符号的优先级 CMP AL,ASC JNE OTH&HAO MOV CH,H JMP OTH4 ENDMCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DI,NUMB LEA SI,MARK DISP STR1 CALL CR MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 START1: DISP MESG CALL CRINPUT: MOV AH,1 INT 21H CMP AL,24H ;判断是否是$,是就退出程序 JE J_SHU1 CMP AL,3DH ;判断是否是等于号,是就跳转PD JE JUD CMP AL,2AH ;判断是否是*号 JE JUD CMP AL,2BH ;判断是否是+ JE JUD CMP AL,2DH ;判断是否是- JE JUD CMP AL,30H ;判断是否小于0 JB BC CMP AL,39H ;判断是否大于9 JA BC CMP WORD PTR SIGN1,0 ;判断数字标志位是否是0,不是0说明连续两次输入数字,跳到输入错误 JNE BC MOV WORD PTR SIGN2,0 ;符号标志位复位 INC WORD PTR SIGN1 ;数字标志位加2,表示有数字输入 SUB AL,30H ;将ASCII码转化成10进制 MOV AH,0 XCHG AX,DI ;将输入的数字存入数字存储区 JMP INPUT JUD:CMP WORD PTR SIGN2,0 JNE BC CMP WORD PTR SIGN1,0 JE BC INC WORD PTR SIGN2 ADD DI,2 ;转到下一个数字存储地址 MOV WORD PTR SIGN1,0 ;数字标志位复位 CALL ADVANCE ;设置优先级 AGAIN CMP BYTE PTRSI,M ;用于判断数字存储区是否为空 JE SAVE CMP CH,SI ;判断权值的大小,SI中是上一个符号或其权值 JA SAVE DEC SI MOV CL,SI CALL MATCH JMP AGAIN SAVE: CMP CH,0 ;判断是否是=号 JE OUTPUT1 INC SI ;符号存储地址加1,为存储下一个符号 MOV SI,AL INC SI MOV SI,CH JMP INPUTJ_SHU1:JMP FAR PTR J_SHU2 BC: CALL CR ;输入错误显示信息 LEA DX,ERROR MOV AH,9 INT 21H JMP J_SHH MATCH PROC NEAR PUSH AX XOR AX,AX XOR BX,BX CMP CL,2AH ;乘法运算 JNE NEXT1 SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI MUL BX MOV DI,AX ADD DI,2 JMP FINISHNEXT1:CMP CL,2BH ;加法运算 JNE NEXT2 SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,2 JMP FINISHNEXT2:CMP CL,2DH ;减法运算 JNE FINISH SUB DI,2 XCHG BX,DI SUB DI,2 SUB DI,BX ADD DI,2FINISH: POP AX RETMATCH ENDPJ_SHU2:JMP FAR PTR J_SHU ;中间跳转OUTPUT1:JMP OUTPUT2 ;中间跳转ADVANCE PROC ;子程序,设置优先级 CHOICE 2AH,1,4 ;* OTH1:CHOICE 2BH,2,3 ;+ OTH2:CHOICE 2DH,3,3 ;- OTH3:CHOICE 3DH,4,0 ;=OTH4:RETADVANCE ENDPCR PROC NEAR ;子程序,回车换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5级考试题及答案
- 2025年广州市花都区狮岭镇芙蓉初级中学教师招聘考试笔试试题(含答案)
- 北京知识产权贯标培训课件
- 2025年佛山市南海区狮山镇英才学校教师招聘考试笔试试题(含答案)
- 医务人员营养培训考核试题(附答案)
- 2024贵州省社区《网格员》备考题汇编(含答案)
- 药品及医疗器械冷链操作培训试题测试题库含答案
- 导游业务综合测试题(含答案)
- 2025年XX市妇联普法知识竞赛题库及答案
- 2025年二级注册结构工程师模拟题和答案分析
- 基孔肯雅热预防宣传课件
- 2025-2030中国海水淡化技术经济性分析与政策补贴机制报告
- 学校学生一日常规管理细则(2025年修订)
- 【语文】小学四年级下册期末质量模拟试题测试卷
- 2025年甘南事业单位考试笔试试题
- 人大代表基础知识培训课件
- 2025年高压电工证考试题库及答案
- 湖北省襄阳市枣阳市2024-2025学年七年级下学期期末考试英语试卷(含答案无听力部分)
- 2025年供热公司培训试题及答案
- 冠心病的防治指南
- 临建工程施工合同范本(2025版)
评论
0/150
提交评论