ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:47.70KB ,
资源ID:9951310      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9951310.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(混合算术运算实训报告解读.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

混合算术运算实训报告解读.docx

1、混合算术运算实训报告解读 课程设计报告课程微机原理课程设计题目混合算术运算的实现系别物理与电子工程学院年级08级专业电子科学与技术班级二学号学生姓名指导教师居伟骏职称讲师设计时间2011-4-2 2011-4-8绪论 (2第一章混合算术运算的分析和设计 (21.1混合算术运算的分析 (21.2 混合算术运算的设计 (31.2.1 对输入信息的判断 (41.2.2 算术的运算 (41.2.3 结果的输出 (52.1 程序汇编 (62.2 程序运行的结果显示如图 (7第三章实训总结 (73.1 实训总结 (7主要参考文献 (9附录 (9绪论此次实训的内容为任意输入4个一位无符号十进制数,它们之间用

2、“+”,“-”,“*”号任意连接成为一个简单的算术运算式,要求按照算术运算法则计算得到正确结果。要求有输入提示信息,并且当输入算式不符合要求时能够输出提示信息,并要求重新输入。此过程自动重复进行,直到输入“$”符号时程序退出。本设计是利用汇编语言来实现算术运算,整个程序代码主要分为三个模块,即输入判断、运算、结果输出。利用汇编程序来实现混合算术运算时遇到的问题主要有怎样判别运算的优先等级、怎样判别符号的优先等级、不能连续输入数字和符号、首位必须是数字等等的问题。在本实训设计中将一一解决这些问题。第一章混合算术运算的分析和设计1.1混合算术运算的分析设计题目要求有:当运行程序时有必要的输入提示信

3、息、当输入算术不符合要求时能够输出提示信息并要求重新输入、整个运算过程能够自动重复进行至输入“$”符号时退出程序。根据这些要求,我们对课题的初步分析是首先对输入的信息限定在一定的范围之内,保证输入的信息是题目要求的数字或者符号。设置两个存储区NUMB和MARK,前者用来存储数字,后者用来存储符号。再设置两个判断标志SIGN1和SIGN2,SIGN1用来保证不能连续输入数字和首位不能是符号,SIGN2保证程序运行时不能连续输入运算符号。例如当连续输入数字或者符号时,结果中会有输出提示信息:YOUR INPUT IS WRONG PLEASE AGAIN。当输入符号满足条件时,对符号设置优先级,并

4、将其权值保存在符号存储区中,当下一个符号要存储到符号存储区中时,现与前者进行比较如权值大于前者那么地址下一位存储,否则将前者的运算先进行计算并保存刚才的符号,数字存储区地址是随着符号存储区地址而变化的,直到当输入是“=”号时跳转到输出程序输出结果,然后继续接下来的运算直到输入“$”时结束程序!1.2 混合算术运算的设计整个程序代码编写的思路可以通过下面的流程图1.2.1清晰的看出。 图1.2.1 混合算术运算流程图1.2.1 对输入信息的判断INPUT: ;对输入进行判断MOV AH,1INT 21HCMP AL,24H ;判断是否是$,是就退出程序JE J_SHU1CMP AL,3DH ;判

5、断是否是=号,是就跳转到PD JE JUDCMP AL,2AH ;判断是否是*号JE JUDCMP AL,2BH ;判断是否是+JE JUDCMP AL,2DH ;判断是否是-JE JUDCMP AL,30H ;判断是否小于0JB BCCMP AL,39H ;判断是否大于9JA BC此段代码的作用就是将输入的信息限定在一定的范围之内,保证输入的是“*”、“+”、“”、“=”,以及数字09,从而更好的满足题目的要求。1.2.2 算术的运算MATCH PROC NEARPUSH AXXOR AX,AXXOR BX,BXCMP CL,2AH ;乘法运算JNE NEXT1SUB DI,2XCHG BX

6、,DISUB DI,2XCHG AX,DIMUL BXMOV DI,AXADD DI,2JMP FINISHNEXT1:CMP CL,2BH ;加法运算JNE NEXT2SUB DI,2XCHG BX,DIADD DI,BXADD DI,2JMP FINISHNEXT2:CMP CL,2DH ;减法运算JNE FINISHSUB DI,2XCHG BX,DISUB DI,2SUB DI,BXADD DI,2FINISH:POP AXRETMATCH ENDP此段代码的作用是实现加、减、乘之间的算术运算。1.2.3 结果的输出OUTPUT2: ;输出程序SUB DI,2CMP WORD PTRD

7、I,0 ;判断结果的正负JGE ANEG WORD PTRDI ;取补码MOV DL,-MOV AH,2INT 21HA: MOV BX,1000 ;AD是将运算结果按位取出并转化成ASCII码在屏幕上显示MOV CX,4MOV SI,0B: MOV AX,DICWDDIV BXMOV DI,DXCMP AL,0JNE CCMP SI,0JNE CCMP CX,1JE CJMP DC : MOV DL,ALADD DL,30HINT 21HD: MOV AX,BXMOV DX,0MOV BX,10DIV BXMOV BX,AXLOOP B此段代码的作用是将运算结果按位取出并转换成ASCII码在

8、屏幕上显示第二章程序的汇编和运行2.1 程序汇编混合算术运算整个程序代码编写完时,便进入了汇编程序。在汇编时也遇到了语法(汇编程序不能识别的语句、指令跳转的范围(图 2.1.1、指定了非法类型(例如对一个过程指定BYTE类型,而不是NEAR或FAR、使用寄存器出错、操作数类型说明等等问题。二解决这些问题就是在汇编过程中给出提示出错的地方,然后在返回到代码中对错误的地方进行一一仔细检查和认真思考。 图2.1.12.2 程序运行的结果显示如图 图2.2.1 首位输入运算符有错误提示 图2.2.2 混合算术运算 图2.2.3 输入“$”时程序退出第三章实训总结3.1 实训总结一个星期的微机原理课程设

9、计就快要结束了,这期间有快乐有忧伤。由于微机原理这门课我们是上学期学的,所以这次的课程设计对我们来说还是有些难度的,毕竟许多知识因为掌握的不够牢靠都已经还给老师了,所以开始时我们并没有太大的信心。但学校这样安排肯定是有其中的道理的,我们也就只管静下心来好好做课程设计的了。我们这一组的设计题目是混合算术运算的实现,也就是用汇编语言来设计一个简易的计算器。拿到题目要求,按照我们一贯的思路,首先好好审题,认真读懂题目要求,明白我们所要设计的程序具体应该实现什么样的功能理解这些之后,就是上网看看有没有什么可以帮助我们更好的解决问题的资料,找一些类似的设计资料来学习一下,看看别人的思路,看看我们可以从中

10、借鉴哪些好的方法等等。很幸运的,我们在网上找到了一位网友上传的关于四则运算的设计报告,其中包含有流程图和源程序等,由于源程序过长,我们就先看了下他的流程图,大概理解了他那个题目的要求,然后我们准备也按他的思路来做,毕竟他的那个思路还是相当明朗的。我们先尝试了一下他的程序,发现汇编后有错误报告,后来经过我们查资料研究出来这个错误是由跳转指令jump产生的,由于源程序过长,jump所在的行数与它所要跳转过去的长度所隔甚远,导致跳转不到应该执行的指令,然后我们在中间增添必要的跳转中转站来解决了这个问题。这个问题解决之后他的程序可以运行了,但还是有很多错误,不过所幸我们已经领会了这个设计思路了,这也是

11、我们学到的只是吧!大概理清了自己的思路,下面我们开始编写代码,虽然网友的代码有错误,但可以供我们借鉴的还是有不少的,首先他的程序框架就很好啊!所以我们也懒得自己再去重新构造框架了,直接在这个网友的基础上改变了若干个指令来实现我们自己所需要的功能。这个过程其实是很痛苦的,偷懒还是要受惩罚的,因为不是我们自己编写的代码,所以有些语句我们还得花时间去理解它们,正是为了这个,我们的清明假期过的并不是那么的轻松。群策群力,集合着我们大家的智慧结晶,我们终于在修改、尝试、修改中不断完善代码,最终达到了设计要求的功能。虽然我们很开心,觉得我们就快大功告成了,但因为老师的一句话,我们小组成员犹如被霜打过的茄子

12、一样,老师过来才看了两行,就直接说:“你们这个是抄的啊!”虽然一班有人和我们做同一个课题,但我们也是将信用的,老师您说不能相互抄袭,我们怎么可能明知故犯呢?他们的程序我们压根就没看过,或许只网上有这么一个版本,所以出现了雷同的现象,但这个设计真的是我们自己在学习掌握的基础上自己完成的啊!虽然老师并没有承认我们,但我们自己承认自己,我们觉得这次实训的精髓我们领悟了,我们问心无愧。虽然我们的程序仍然有这样或那样的缺点和不足,但它仍然是符合了题目的要求,只是在源程序上显得比较繁琐,我们尽力想将代码改的精简一些,但往往弄巧成拙,结果不是太理想。这次实训不光是对我们所学知识的一个检验,更是对我们思维方式

13、和解决问题的能力的一个磨练,谢谢老师的指导,我们在课程设计中检验自我,完善自我,有了长足的进步!主要参考文献1、微型计算机原理及应用技术(第二版2、温冬婵、沈美明:清华大学出版社,IBM PC 汇编语言程序设计教程附录混合算术运算程序代码DATAS SEGMENTSTR1 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(0ERROR DB YOUR INPUT IS W

14、RONG PLEASE AGAIN$DATAS ENDSDISP MACRO STR ;宏定义,显示信息LEA DX,STRMOV AH,9INT 21HENDMCHOICE MACRO ASC,HAO,H ;宏定义,设置符号的优先级CMP AL,ASCJNE OTH&HAOMOV CH,HJMP OTH4ENDMCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DI,NUMBLEA SI,MARKDISP STR1CALL CRMOV AX,0MOV BX,0MOV CX,0MOV DX,0START1:D

15、ISP MESGCALL CRINPUT:MOV AH,1INT 21HCMP AL,24H ;判断是否是$,是就退出程序JE J_SHU1CMP AL,3DH ;判断是否是等于号,是就跳转PD JE JUDCMP AL,2AH ;判断是否是*号JE JUDCMP AL,2BH ;判断是否是+JE JUDCMP AL,2DH ;判断是否是-JE JUDCMP AL,30H ;判断是否小于0JB BCCMP AL,39H ;判断是否大于9JA BCCMP WORD PTR SIGN1,0 ;判断数字标志位是否是0,不是0说明连续两次输入数字,跳到输入错误JNE BCMOV WORD PTR SI

16、GN2,0 ;符号标志位复位INC WORD PTR SIGN1 ;数字标志位加2,表示有数字输入SUB AL,30H ;将ASCII码转化成10进制MOV AH,0XCHG AX,DI ;将输入的数字存入数字存储区JMP INPUTJUD:CMP WORD PTR SIGN2,0JNE BCCMP WORD PTR SIGN1,0JE BCINC WORD PTR SIGN2ADD DI,2 ;转到下一个数字存储地址MOV WORD PTR SIGN1,0 ;数字标志位复位CALL ADV ANCE ;设置优先级AGAINCMP BYTE PTRSI,M ;用于判断数字存储区是否为空JE S

17、A VECMP CH,SI ;判断权值的大小,SI中是上一个符号或其权值JA SA VEDEC SIMOV CL,SICALL MATCHJMP AGAINSA VE:CMP CH,0 ;判断是否是=号JE OUTPUT1INC SI ;符号存储地址加1,为存储下一个符号MOV SI,ALINC SIMOV SI,CHJMP INPUTJ_SHU1:JMP FAR PTR J_SHU2BC: CALL CR ;输入错误显示信息LEA DX,ERRORMOV AH,9INT 21HJMP J_SHHMATCH PROC NEARPUSH AXXOR AX,AXXOR BX,BXCMP CL,2A

18、H ;乘法运算JNE NEXT1SUB DI,2XCHG BX,DISUB DI,2XCHG AX,DIMUL BXMOV DI,AXADD DI,2JMP FINISHNEXT1:CMP CL,2BH ;加法运算JNE NEXT2SUB DI,2XCHG BX,DISUB DI,2ADD DI,BXADD DI,2JMP FINISHNEXT2:CMP CL,2DH ;减法运算JNE FINISHSUB DI,2XCHG BX,DISUB DI,2SUB DI,BXADD DI,2FINISH:POP AXRETMATCH ENDPJ_SHU2:JMP FAR PTR J_SHU ;中间跳转

19、OUTPUT1:JMP OUTPUT2 ;中间跳转ADV ANCE PROC ;子程序,设置优先级CHOICE 2AH,1,4 ;*OTH1:CHOICE 2BH,2,3 ;+OTH2:CHOICE 2DH,3,3 ;-OTH3:CHOICE 3DH,4,0 ;=OTH4:RETADV ANCE ENDPCR PROC NEAR ;子程序,回车换行PUSH AXPUSH DXMOV AH,2MOV DL,0DHINT 21HMOV AH,2MOV DL,0AHINT 21HPOP DXPOP AXRETCR ENDPOUTPUT2: ;输出程序SUB DI,2CMP WORD PTRDI,0

20、;判断结果的正负JGE ANEG WORD PTRDI ;取补码MOV DL,-MOV AH,2INT 21HA: MOV BX,100 ;AD是将运算结果按位取出并转化成ASCII码在屏幕上显示MOV CX,4MOV SI,0B: MOV AX,DICWDDIV BXMOV DI,DXCMP AL,0JNE CCMP SI,0JNE CCMP CX,1JE CJMP DC : MOV DL,ALADD DL,30HMOV AH,2INT 21HD: MOV AX,BXMOV DX,0MOV BX,10DIV BXMOV BX,AXLOOP BJ_SHH:MOV WORD PTRDI+2,0MOV WORD PTR SIGN2,0MOV WORD PTR SIGN1,0LEA DI,NUMBLEA SI,MARKJMP START1J_SHU:MOV AH,4CHINT 21HCODES ENDSEND START

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1