版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..课程设计任务书学生__专业__指导工作单位:XX理工大学题目:数制转换3任务内容:通过键盘输入一个8进制数,通过屏幕提示菜单选择转换成2进制,10进制或者16进制数并显示。要求完成的主要任务:设计方案的选择与确定:根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。程序确定软件方案,绘制系统软件流程图,完成汇编程序的编制。说明书撰写:完成课程设计说明书的撰写,字数不少于3000字。时间安排:资料检索与收集2天系统方案设计与确定1天系统设计与程序编写3天说明书撰写3天答辩1天指导教师签名:年月日系主任〔或责任教师签名:年月日目录摘要I1原理分析12分析任务及要求32.1数制转换算法32.1.1八进制转换成二进制3八进制转换成十进制3八进制转换成十六进制33程序设计流程43.1绘制程序流程图43.2设计思路54汇编语言源程序设计64.1堆栈段和数据段程序设计64.2主程序设计64.3输入八进制数程序84.4输出二进制数程序84.5输出十进制数程序94.6输出十六进制数程序104.7回车键确定程序115结果分析126小结与体会15参考文献16附录17..摘要本次程序设计主要是利用汇编语言中的DOS调用和各种进制间的转换来实现通过键盘输入一个8进制数,在屏幕上提示菜单选择转换成2进制,10进制或者16进制数并显示。汇编语言是面向机器的程序设计语言。汇编语言比机器语言易于读写、调试和修改,同时也具有执行速度快,占用内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植,本次设计主要是利用8086汇编语言进行设计。常说汇编语言过时,是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。只是,现在计算机最大的领域为IT软件,也是我们常说的Windows编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序时成倍的优秀,但是代价是需要更长的时间来优化,假如是对计算机原理及编程基础不扎实,实在是得不偿失,对比现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花几倍甚至是几十倍的时间,不如使用其它语言来完成只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下得必然结果。但是,这也并不代表汇编语言是没有用的、不需要学的,相反,只有在理解和掌握汇编语言的基础上,才能更好的使用其它高级语言。关键词:汇编,汇编语言,机器语言,DOS调用..数制转换课程设计1原理分析进位计数制是人们利用符号来计数的方法。一种进位计数制包含一组数码符号和两个基本因素。数码是用不同的数字符号来表示一种数制的数值,这些数字符号称为"数码"。基是数制所使用的数码个数称为"基"。权是某数制每一位所具有的值称为"权"。十六进制<Hexadecimal>0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F十进制<Decimal>0.1.2.3.4.5.6.7.8.9八进制<Octal>0.1.2.3.4.5.6.7二进制<Binary>0.1在计算机内部采用二进制计数制,但在实际应用中,需要计算机处理的信息是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息等。但在计算机中采用的是二进制计数制。本次课程设计通过所学的微机原理,用汇编语言编写程序,实现二进制转换成十进制或十六进制,十进制转换成二进制或十六进制,十六进制转换成二进制或十进制。十进制转换为二进制整数部分的方法叫做除2取余法,每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。小数部分的方法叫乘2取整法,就是将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数。二进制转换为十进制不分整数和小数部分,方法〔按权相加法是将二进制每位上的数乘以权,然后相加之和即是十进制数。二进制转换为十六进制用取四合一法,即从二进制的小数点为分界点,向左〔向右每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左〔向右取四位后,取到最高〔最低位时候,如果无法凑足四位,可以在小数点最左边〔最右边,即整数的最高位〔最低位添0,凑足四位。将十六进制转换为二进制,取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。十进制转换成十六进制的方法与十进制转换成二进制的方法相同,但不同的是每次除以16。2分析任务及要求题目内容:通过键盘输入一个8进制数,通过屏幕提示菜单选择转换成2进制,10进制或者16进制数并显示。设计要求:根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。程序确定软件方案,绘制系统软件流程图,完成汇编程序的编制。通过对题目进行分析,容易看出本次设计可分为3个部分:输入、进制转换、输出显示。输入可通过DOS调用——0AH,输入一个八进制数;进行数值转换;输出也通过DOS调用——09H,实现输出并显示。2.1数制转换算法2.1.1八进制转换成二进制由八进制向二进制转换可将每一位八进制数对应于三位二进制数,依次进行替换,转换方式如下所示〔左边是一位八进制数,右边是该八进制数所对应的二进制数:0——000;1——001;2——010;3——011;4——100;5——101;6——110;7——111;2.1.2八进制转换成十进制八进制向十进制的转换可通过按基数位权的展开方式来实现,方法是将八进制每位上的数乘以权,然后相加之和即是十进制数。2.1.3八进制转换成十六进制若将八进制直接向十六进制转换,则比较复杂,故可以将八进制先转换为二进制再转换为十六进制。将八进制转换为二进制的算法在第一节已经说明,这里不再赘述,故下面只说明二进制转换为十六进制的算法〔左边为二进制数,4个一组,右边为16进制:0000——0;0001——1;0010——2;0011——3;0100——4;0101——5;0110——6;0111——7;1000——8;1001——9;1010——A;1011——B;1100——C;1101——D;1110——E;1111——F;3程序设计流程3.1绘制程序流程图开始开始显示MENU从键盘输入数字显示ERROR重新显示MENU输入数字是否小于4?DONEYNN图3-1程序流程图DONEDONE数字为1,转向L1输入一个八进制数转换为二进制数并输出显示返回主程序数字为1,转向L1输入一个八进制数转换为十进制数并输出显示返回主程序数字为1,转向L1输入一个八进制数转换为十六进制数并输出显示返回主程序3.2设计思路首先对原理进行分析,了解不同进制数之间是如何进行转换的,充分认识汇编语言的指令系统,掌握各个汇编语言的指令系统,掌握各个汇编指令的功能及用法,了解各种程序结构〔顺序、分支、循环和子程序的特点。首先定义堆栈段,再定义数据段,在数据段中输入MENU中要显示的内容,再建一个表TABLE,TABLE中的内容为L1,L2,L3。然后根据题目要求设计简单的程序流程图,再根据流程图设计出每一个模块的汇编语言程序,然后再通过调用、跳转、转移等方法将各个子程序连接在一起。这样依据题目要求的汇编程序就初步完成了。本次利用的软件是MF2KP,首先在MF2KP环境下输入设计的汇编程序,然后编译、连接、运行。4汇编语言源程序设计4.1堆栈段和数据段程序设计首先定义堆栈段和数据段的程序,程序设计如下所示:DATASEGMENTMENUDB'PleaseInputYourChoice:1:Bin2,2:Dec10,3:Hex16',0dh,0ah,'$'Mess1db'PleaseinputaOct8number:',0dh,0ah,'$'Mess2db'OutputBin2is:',0dh,0ah,'$'Mess3db'OutputDec10is:',0dh,0ah,'$'Mess4db'OutputHex16is:',0dh,0ah,'$'ERRORDB'ERROR!PLEASEINPUTYOURCHOICEAGAIN,$'TABLEDWAA1,L1,L2,L3DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA4.2主程序设计MAINPROCFARASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXAA1:LEADX,MENUMOVAH,09HINT21HMOVAH,01HINT21HSUBAL,30HCMPAL,04HDONELEADX,ERRORMOVAH,09HINT21HJMPAA1DONE:CMPAL,01HJZL1CMPAL,02HJZL2CMPAL,03HJZL3L1:CALLINOCTCALLFARCRLFCALLFAROUTBINCALLFARCRLFJMPAA1L2:CALLINOCTCALLCRLFCALLOUTDECCALLCRLFJMPAA1L3:CALLFARINOCTCALLFARCRLFCALLFAROUTHEXCALLFARCRLFJMPAA1MAINENDPMOVAH,4CHINT21HCODEENDSENDSTART4.3输入八进制数程序INOCTPROCNEARLEADX,MESS1MOVAH,09HINT21HMOVBX,0INOL1:MOVAH,01HINT21HCMPAL,0DHJZINOEXITSUBAL,30HCMPAL,9EINOL2SUBAL,7INOL2:MOVCL,3SHLBX,CLORBL,ALJMPINOL1INOEXIT:RETINOCTENDP4.4输出二进制数程序OUTBINPROCNEARLEADX,MESS2MOVAH,09HINT21HMOVCX,16OBL1:ROLBX,1MOVDL,BLANDDL,01HORDL,30HMOVAH,02HINT21HLOOPOBL1RETOUTBINENDP4.5输出十进制数程序OUTDECPROCLEADX,MESS3MOVAH,09HINT21HMOVCX,10000CALLDECL1MOVCX,1000CALLDECL1MOVCX,100CALLDECL1MOVCX,10CALLDECL1MOVCX,1CALLDECL1RETOUTDECENDPDECL1PROCNEARMOVAX,BXMOVDX,0DIVCXMOVBX,DXMOVDL,ALADDDL,30HMOVAH,2INT21HRETDECL1ENDP4.6输出十六进制数程序OUTHEXPROCLEADX,MESS4MOVAH,09HINT21HMOVCX,4OHL1:ROLBX,1ROLBX,1ROLBX,1ROLBX,1MOVDL,BLANDDL,0FHADDDL,30HCMPDL,39HEOHL2ADDDL,7OHL2:MOVAH,02HINT21HLOOPOHL1RETOUTHEXENDPCODEENDSENDSTART4.7回车键确定程序CRLFPROCMOVAH,02HMOVDL,0DHINT21HMOVDL,0AHINT21HRETCRLFENDP5结果分析调试运行后首先出现的界面是:请输入您的选择:转换为二进制输出则输入1;转换为十进制输出则输入2;转换为十六进制输出则输入3;;结果如下图4-1所示:图5-1请输入您的选择上述选择输入后,就显示:请输入一个八进制数,结果如下图4-2所示:图5-2请求输入一个八进制数此后输入按照界面提示输入相应的数字即可完成各数制间的转换,其算法已在前面详细说明,这里不再赘述。图5-3将八进制转换成二进制数输出图5-4将八进制转换成十进制数输出图5-5将八进制转换成十六进制数输出6小结与体会"微机原理与系统设计"作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,以emeu8086CPU为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。这次微机原理课程设计,在设计的这些日子里,可以说得是甘苦与共,甘的是可以学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。深刻了解了老师生科经常强调的东西,比如画流程图的习惯。起先我并不十分在意。但是,这次课程设计完全颠覆了我以前的认识,在这次课程设计中,画程序方框图显得尤为重要。通过流程图,在做设计的过程中,我清楚的知道每一步要做什么,每一步要完成什么任务,而且在程序调试的过程中也有利于查错。相比之前错误的做法,究其原因还是因为课本上用到的基本都是一些基础性质的程序,思路已经相当清晰再画流程图显得多余。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段编程的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在实际设计的过程中遇到问题,可以说是难以预测的,各种各样的问题都会出现,同时也会在设计的过程中发现自己的不足之处,例如对以前所学的知识掌握不够牢固、理解的不够深刻。通过这次课设我掌握了怎么去处理实际编程中出现的各类问题,其次在编程中发现了自己的弱点,最后巩固了理论知识,提高了自己的动手能力。这次微原课设圆满完成,个中滋味确是只有自己亲身经历才明白。这次的设计,让我对微机原理的理解又更深了一层,提高了我将理论与实际相结合和解决问题的能力。同时,我要感谢帮助我的小伙伴们,他们的建议,指导,帮我分析让我顺利完成课设。通过这次课设,作为工科生的我应该谨记:程序只有在经常的读和写中才可提高,在以后学习编程语言的时候,应该要多动手实践编程,实践出真知是亘古不变的真理。参考文献[1]潘峰主编.《微型计算机原理与汇编语言》.第三版.XX:电子工业出版社,2003[2]韩志军.《微机原理》课程的教学改革与实践[J].XX工程学院学报〔社会科学版.2003.12[3]杨素行《微型计算机系统原理及应用》,北京,清华大学出版社,20XX[4]《微机实验及课程设计教程》〔试用版2.0,东南大学《微机系统与接口》课程组,20XX2月[5]周佩玲.《微型计算机原理与接口技术》.电子工业出版社,2005[6]谭浩强.《微型计算机原理及应用》.清华大学出版社,2001附录以下为实际完整程序段DATASEGMENTMENUDB'PleaseInputYourChoice:1:Bin2,2:Dec10,3:Hex16',0dh,0ah,'$'Mess1db'PleaseinputaOct8number:',0dh,0ah,'$'Mess2db'OutputBin2is:',0dh,0ah,'$'Mess3db'OutputDec10is:',0dh,0ah,'$'Mess4db'OutputHex16is:',0dh,0ah,'$'ERRORDB'ERROR!PLEASEINPUTYOURCHOICEAGAIN,$'TABLEDWAA1,L1,L2,L3DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXAA1:LEADX,MENUMOVAH,09HINT21HMOVAH,01HINT21HSUBAL,30HCMPAL,08HEDONELEADX,ERRORMOVAH,09HINT21HJMPAA1DONE:CMPAL,01HJZL1CMPAL,02HJZL2CMPAL,03HJZL3L1:CALLINOCTCALLCRLFCALLOUTBINCALLCRLFJMPAA1L2:CALLINOCTCALLCRLFCALLOUTDECCALLCRLFJMPAA1L3:CALLINOCTCALLCRLFCALLOUTHEXCALLCRLFJMPAA1CRLFPROCMOVAH,02HMOVDL,0DHINT21HMOVDL,0AHINT21HRETCRLFENDPINOCTPROCNEARLEADX,MESS1MOVAH,09HINT21HMOVBX,0INOL1:MOVAH,01HINT21HCMPAL,0DHJZIN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 回收手表合同模板范本
- 承包货物合同家电范本
- 车险人伤一次性赔偿协议书
- 荒地承包合同政策
- 2024年度医疗器械采购供应合同
- 2024年度电子商务知识产权保护合同
- 2024年度市场营销内部承包协议书
- 2024年度网络安全技术检测与维护合同
- 2024版版权购买协议书
- 2024年度版权许可使用合同标的:游戏作品的版权许可
- 婚内财产协议书(2024版)
- 张家口事业单位笔试真题2024
- 国家开放大学《管理英语4》边学边练Unit 5-8(答案全)
- 当代世界经济与政治 李景治 第八版 课件 第1、2章 当代世界政治、当代世界经济
- 篮球智慧树知到期末考试答案章节答案2024年浙江大学
- 国开作业《公共关系学》实训项目1:公关三要素分析(六选一)参考552
- 碳排放核算与报告要求 第XX部分:铅冶炼企业
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 2024中国铁路成都局招聘笔试冲刺题(带答案解析)
- 肺功能进修总结汇报
- 初中英语名词单复数专项训练题目
评论
0/150
提交评论