资源描述
word课程设计任务书学生某某: 专业班级:指导教师: 工作单位: 某某理工大学 题 目:数制转换3任务内容:通过键盘输入一个8进制数,通过屏幕提示菜单项选择择转换成进制,10进制或者6进制数并显示。要求完成的主要任务:设计方案的选择与确定:根据题目要求,参考相关文献资料,选择适宜的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。程序 确定软件方案,绘制系统软件流程图,完成汇编程序的编制。说明书撰写:完成课程设计说明书的撰写,字数不少于3000字。时间安排:资料检索与收集 2天系统方案设计与确定 1天系统设计与程序编写 3天说明书撰写 3天辩论 1天指导教师签名: 年 月 日系主任或责任教师签名: 年 月 日目录摘要I1 原理分析12 分析任务与要求332.1.1 八进制转换成二进制3333 程序设计流程4454 汇编语言源程序设计66688910115 结果分析126 小结与体会15参考文献16附录17文案大全摘要本次程序设计主要是利用汇编语言中的DOS调用和各种进制间的转换来实现通过键盘输入一个8进制数,在屏幕上提示菜单项选择择转换成进制,10进制或者6进制数并显示。汇编语言是面向机器的程序设计语言。汇编语言比机器语言易于读写、调试和修改,同时也具有执行速度快,占用内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植,本次设计主要是利用8086汇编语言进展设计。常说汇编语言过时,是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。只是,现在计算机最大的领域为IT软件,也是我们常说的Windows编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序时成倍的优秀,但是代价是需要更长的时间来优化,假设是对计算机原理与编程根底不扎实,实在是得不偿失,比照现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花几倍甚至是几十倍的时间,不如使用其它语言来完成只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下得必然结果。但是,这也并不代表汇编语言是没有用的、不需要学的,相反,只有在理解和掌握汇编语言的根底上,才能更好的使用其它高级语言。关键词:汇编,汇编语言,机器语言,DOS调用数制转换课程设计1原理分析进位计数制是人们利用符号来计数的方法。一种进位计数制包含一组数码符号和两个根本因素。数码是用不同的数字符号来表示一种数制的数值,这些数字符号称为数码。基是数制所使用的数码个数称为基。权是某数制每一位所具有的值称为权。十六进制(Hexadecimal)十进制(Decimal)八进制(Octal)二进制(Binary)在计算机内部采用二进制计数制,但在实际应用中,需要计算机处理的信息是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息等。但在计算机中采用的是二进制计数制。本次课程设计通过所学的微机原理,用汇编语言编写程序,实现二进制转换成十进制或十六进制,十进制转换成二进制或十六进制,十六进制转换成二进制或十进制。十进制转换为二进制整数局部的方法叫做除2取余法,每次将整数局部除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。小数局部的方法叫乘2取整法,就是将小数局部乘以2,然后取整数局部,剩下的小数局部继续乘以2,然后取整数局部,剩下的小数局部又乘以2,一直取到小数局部为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保存多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数。二进制转换为十进制不分整数和小数局部,方法按权相加法是将二进制每位上的数乘以权,然后相加之和即是十进制数。二进制转换为十六进制用取四合一法,即从二进制的小数点为分界点,向左向右每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进展排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左向右取四位后,取到最高最低位时候,如果无法凑足四位,可以在小数点最左边最右边,即整数的最高位最低位添0,凑足四位。将十六进制转换为二进制,取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。十进制转换成十六进制的方法与十进制转换成二进制的方法一样,但不同的是每次除以16。2分析任务与要求题目内容:通过键盘输入一个8进制数,通过屏幕提示菜单项选择择转换成进制,10进制或者16进制数并显示。设计要求:根据题目要求,参考相关文献资料,选择适宜的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。程序 确定软件方案,绘制系统软件流程图,完成汇编程序的编制。通过对题目进展分析,容易看出本次设计可分为3个局部:输入、进制转换、输出显示。输入可通过DOS调用0AH,输入一个八进制数;进展数值转换;输出也通过DOS调用09H,实现输出并显示。2.1.1 八进制转换成二进制由八进制向二进制转换可将每一位八进制数对应于三位二进制数,依次进展替换,转换方式如下所示左边是一位八进制数,右边是该八进制数所对应的二进制数:0000;1001;2010;3011;4100;5101;6110;7111;八进制向十进制的转换可通过按基数位权的展开方式来实现,方法是将八进制每位上的数乘以权,然后相加之和即是十进制数。假设将八进制直接向十六进制转换,如此比拟复杂,故可以将八进制先转换为二进制再转换为十六进制。将八进制转换为二进制的算法在第一节已经说明,这里不再赘述,故下面只说明二进制转换为十六进制的算法左边为二进制数,4个一组,右边为16进制:00000;00011;00102;00113;01004;01015;01106;01117;10008;10019;1010A;1011B;1100C;1101D;1110E;1111F;3程序设计流程YNN图3-1 程序流程图数字为1,转向L1输入一个八进制数转换为十六进制数并输出显示返回主程序首先对原理进展分析,了解不同进制数之间是如何进展转换的,充分认识汇编语言的指令系统,掌握各个汇编语言的指令系统,掌握各个汇编指令的功能与用法,了解各种程序结构顺序、分支、循环和子程序的特点。首先定义堆栈段,再定义数据段,在数据段中输入MENU中要显示的内容,再建一个表TABLE,TABLE中的内容为L1,L2,L3。然后根据题目要求设计简单的程序流程图,再根据流程图设计出每一个模块的汇编语言程序,然后再通过调用、跳转、转移等方法将各个子程序连接在一起。这样依据题目要求的汇编程序就初步完成了。本次利用的软件是MF2KP,首先在MF2KP环境下输入设计的汇编程序,然后编译、连接、运行。4汇编语言源程序设计首先定义堆栈段和数据段的程序,程序设计如下所示:DATA SEGMENTMENU DB Please Input Your Choice:1:Bin2,2:Dec10,3:Hex16,0dh,0ah,$Mess1 db Please input a Oct8 number:,0dh,0ah,$Mess2 db Output Bin2 is:,0dh,0ah,$Mess3 db Output Dec10 is:,0dh,0ah,$Mess4 db Output Hex16 is:,0dh,0ah ,$ERROR DB ERROR!PLEASE INPUT YOUR CHOICE AGAIN , $TABLE DW AA1, L1,L2,L3DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX AA1:LEA DX,MENU MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H CMP AL,04H DONE LEA DX,ERROR MOV AH,09H INT 21H JMP AA1 DONE:CMP AL,01H JZ L1 CMP AL,02H JZ L2 CMP AL,03H JZ L3 L1:CALL INOCT CALL FAR CRLF CALL FAR OUTBIN CALL FAR CRLF JMP AA1 L2:CALL INOCT CALL CRLF CALL OUTDEC CALL CRLF JMP AA1 L3:CALL FAR INOCT CALL FAR CRLF CALL FAR OUTHEX CALL FAR CRLF JMP AA1 MAIN ENDP MOV AH,4CH INT 21HCODE ENDSEND STARTINOCT PROC NEAR LEA DX,MESS1 MOV AH,09H INT 21H MOV BX,0INOL1:MOV AH,01H INT 21H CMP AL,0DH JZ INOEXIT SUB AL,30H CMP AL,9 E INOL2 SUB AL,7INOL2:MOV CL,3 SHL BX,CL OR BL,AL JMP INOL1INOEXIT:RETINOCT ENDPOUTBIN PROC NEAR LEA DX,MESS2 MOV AH,09H INT 21H MOV CX,16OBL1:ROL BX,1 MOV DL,BL AND DL,01H OR DL,30H MOV AH,02H INT 21H LOOP OBL1 RETOUTBIN ENDPOUTDEC PROC LEA DX,MESS3 MOV AH,09H INT 21H MOV CX,10000 CALL DECL1 MOV CX,1000 CALL DECL1 MOV CX,100 CALL DECL1 MOV CX,10 CALL DECL1 MOV CX,1 CALL DECL1 RET OUTDEC ENDPDECL1 PROC NEAR MOV AX,BX MOV DX,0 DIV CX MOV BX,DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H RETDECL1 ENDPOUTHEX PROC LEA DX,MESS4 MOV AH,09H INT 21H MOV CX,4OHL1:ROL BX,1 ROL BX,1 ROL BX,1 ROL BX,1 MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39H E OHL2 ADD DL,7OHL2:MOV AH,02H INT 21H LOOP OHL1 RETOUTHEX ENDPCODE ENDS END STARTCRLF PROC MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H RET CRLF ENDP5结果分析 调试运行后首先出现的界面是:请输入您的选择:转换为二进制输出如此输入1;转换为十进制输出如此输入2;转换为十六进制输出如此输入3;结果如如下图4-1所示:图5-1 请输入您的选择 上述选择输入后,就显示:请输入一个八进制数,结果如如下图4-2所示: 图5-2 请求输入一个八进制数 此后输入按照界面提示输入相应的数字即可完成各数制间的转换,其算法已在前面详细说明,这里不再赘述。 图5-3 将八进制转换成二进制数输出 图5-4 将八进制转换成十进制数输出 图5-5 将八进制转换成十六进制数输出6小结与体会“微机原理与系统设计作为电子信息类本科生教学的主要根底课之一,课程严密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,以emeu8086CPU为主线,系统介绍微型计算机的根本知识,根本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。这次微机原理课程设计,在设计的这些日子里,可以说得是甘苦与共,甘的是可以学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。深刻了解了教师生科经常强调的东西,比如画流程图的习惯。起先我并不十分在意。但是,这次课程设计完全颠覆了我以前的认识,在这次课程设计中,画程序方框图显得尤为重要。通过流程图,在做设计的过程中,我清楚的知道每一步要做什么,每一步要完成什么任务,而且在程序调试的过程中也有利于查错。相比之前错误的做法,究其原因还是因为课本上用到的根本都是一些根底性质的程序,思路已经相当清晰再画流程图显得多余。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段编程的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个存放器的内容以确保程序的正确性上都有了很大程度的提高。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在实际设计的过程中遇到问题,可以说是难以预测的,各种各样的问题都会出现,同时也会在设计的过程中发现自己的不足之处,例如对以前所学的知识掌握不够结实、理解的不够深刻。通过这次课设我掌握了怎么去处理实际编程中出现的各类问题,其次在编程中发现了自己的弱点,最后巩固了理论知识,提高了自己的动手能力。这次微原课设圆满完成,个中滋味确是只有自己亲身经历才明白。这次的设计,让我对微机原理的理解又更深了一层,提高了我将理论与实际相结合和解决问题的能力。同时,我要感谢帮助我的小伙伴们,他们的建议,指导,帮我分析让我顺利完成课设。通过这次课设,作为工科生的我应该谨记:程序只有在经常的读和写中才可提高,在以后学习编程语言的时候,应该要多动手实践编程,实践出真知是亘古不变的真理。参考文献1 潘峰主编.微型计算机原理与汇编语言.第三版.某某: 电子工业,20032 韩志军.微机原理课程的教学改革与实践J. 某某工程学院学报社会科学3 杨素行微型计算机系统原理与应用,清华大学,2004年4微机实验与课程设计教程试用版2.0,东南大学微机系统与接口课程组,2009年2月5 周佩玲.微型计算机原理与接口技术.电子工业,20056 谭浩强.微型计算机原理与应用.清华大学,2001附录以下为实际完整程序段DATA SEGMENTMENU DB Please Input Your Choice:1:Bin2,2:Dec10,3:Hex16,0dh,0ah,$Mess1 db Please input a Oct8 number:,0dh,0ah,$Mess2 db Output Bin2 is:,0dh,0ah,$Mess3 db Output Dec10 is:,0dh,0ah,$Mess4 db Output Hex16 is:,0dh,0ah ,$ERROR DB ERROR!PLEASE INPUT YOUR CHOICE AGAIN , $TABLE DW AA1, L1,L2,L3DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX AA1:LEA DX,MENU MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H CMP AL,08H E DONE LEA DX,ERROR MOV AH,09H INT 21H JMP AA1 DONE:CMP AL,01H JZ L1 CMP AL,02H JZ L2 CMP AL,03H JZ L3 L1:CALL INOCT CALL CRLF CALL OUTBIN CALL CRLF JMP AA1 L2:CALL INOCT CALL CRLF CALL OUTDEC CALL CRLF JMP AA1 L3:CALL INOCT CALL CRLF CALL OUTHEX CALL CRLF JMP AA1CRLF PROC MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H RET CRLF ENDPINOCT PROC NEAR LEA DX,MESS1 MOV AH,09H INT 21H MOV BX,0INOL1:MOV AH,01H INT 21H CMP AL,0DH JZ INOEXIT SUB AL,30H CMP AL,9 E INOL2 SUB AL,7INOL2:MOV CL,3 SHL BX,CL OR BL,AL JMP INOL1INOEXIT:RETINOCT ENDPOUTBIN PROC NEAR LEA DX,MESS2 MOV AH,09H INT 21H MOV CX,16OBL1:ROL BX,1 MOV DL,BL AND DL,01H OR DL,30H MOV AH,02H INT 21H LOOP OBL1 RETOUTBIN ENDPOUTDEC PROC LEA DX,MESS3 MOV AH,09H INT 21H MOV CX,10000 CALL DECL1 MOV CX,1000 CALL DECL1 MOV CX,100 CALL DECL1 MOV CX,10 CALL DECL1 MOV CX,1 CALL DECL1 RET OUTDEC ENDPDECL1 PROC NEAR MOV AX,BX MOV DX,0 DIV CX MOV BX,DX MOV DL,AL ADD DL,30H MOV AH,2 INT 21H RETDECL1 ENDPOUTHEX PROC LEA DX,MESS4 MOV AH,09H INT 21H MOV CX,4OHL1:ROL BX,1 ROL BX,1 ROL BX,1 ROL BX,1 MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39H E OHL2 ADD DL,7OHL2:MOV AH,02H INT 21H LOOP OHL1 RETOUTHEX ENDPCODE ENDS END START
展开阅读全文