微机原理课设数制转换

上传人:z****2 文档编号:62010081 上传时间:2022-03-13 格式:DOC 页数:25 大小:336KB
收藏 版权申诉 举报 下载
微机原理课设数制转换_第1页
第1页 / 共25页
微机原理课设数制转换_第2页
第2页 / 共25页
微机原理课设数制转换_第3页
第3页 / 共25页
资源描述:

《微机原理课设数制转换》由会员分享,可在线阅读,更多相关《微机原理课设数制转换(25页珍藏版)》请在装配图网上搜索。

1、课程设计任务书学生姓名: 专业班级:指导教师: 工作单位:武汉理工大学题目:数制转换3任务内容:通过键盘输入一个8进制数,通过屏幕提示菜单选择转换成2进制, 10进制或者1 6进制数并显示。要求完成的主要任务:设计方案的选择与确定:根据题目要求,参考相关文献资料,选择合适的软硬件设计方案 图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。 程序编制:确定软件方案,绘制系统软件流程图,完成汇编程序的编制。 说明书撰写:完成课程设计说明书的撰写,字数不少于 3000字。时间安排:天天天天天资料检索与收集2系统方案设计与确定1系统设计与程序编写3说明书撰写3答辩1指导教师签名:系主任(或责任教师

2、)签名:目录摘要 I1原理分析 22分析任务及要求 42.1数制转换算法 42.1.1 八进制转换成二进制 4八进制转换成十进制 4八进制转换成十六进制 43程序设计流程 53.1绘制程序流程图 53.2设计思路 64汇编语言源程序设计 74.1堆栈段和数据段程序设计 74.2主程序设计 74.3输入八进制数程序 94.4输出二进制数程序 94.5输出十进制数程序 104.6输出十六进制数程序 114.7回车键确定程序 125结果分析 136小结与体会 16参考文献 17附录 18摘要本次程序设计主要是利用汇编语言中的 DOS调用和各种进制间的转换来实现通过键盘 输入一个8进制数,在屏幕上提示

3、菜单选择转换成2进制,10进制或者1 6进制数并显示。汇编语言是面向机器的程序设计语言。汇编语言比机器语言易于读写、调试和修改, 同时也具有执行速度快,占用内存空间少等优点,但在编写复杂程序时具有明显的局限性, 汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植,本次设计主要是利 用8086汇编语言进行设计。常说汇编语言过时,是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然 是程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。只是, 现在计算机最大的领域为IT软件,也是我们常说的 Windows编程,在熟练的程序员手里, 使用汇编语言编写的程序,运行效率

4、与性能比其它语言写的程序时成倍的优秀,但是代价 是需要更长的时间来优化,假如是对计算机原理及编程基础不扎实,实在是得不偿失,对 比现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司 不可以让一个团队使用汇编语言来编写所有的东西,花几倍甚至是几十倍的时间,不如使 用其它语言来完成只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市 场经济下得必然结果。但是,这也并不代表汇编语言是没有用的、不需要学的,相反,只有在理解和掌握汇 编语言的基础上,才能更好的使用其它高级语言。关键词:汇编,汇编语言,机器语言,DOS调用数制转换课程设计1原理分析进位计数制是人们利用符

5、号来计数的方法。一种进位计数制包含一组数码 符号和两个基本因素。数码是用不同的数字符号来表示一种数制的数值,这些 数字符号称为”数码”。基是数制所使用的数码个数称为”基”。权是某数制每 一位所具有的值称为”权”。十六进制十进制(Decimal)0.123456789八进制(Octal)0.1234567二进制(Binary)0.1在计算机内部采用二进制计数制,但在实际应用中,需要计算机处理的信 息是多种多样的,如各种进位制的数据,不同语种的文字符号和各种图像信息 等。但在计算机中采用的是二进制计数制。本次课程设计通过所学的微机原理, 用汇编语言编写程序,实现二进制转换成十进制或十六进制,十进制

6、转换成二 进制或十六进制,十六进制转换成二进制或十进制。十进制转换为二进制整数部分的方法叫做除2取余法,每次将整数部分除以2,余数为该位权上的数,而商继续除以 2,余数又为上一个位权上的数,这 个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起, 一直到最前面的一个余数。小数部分的方法叫乘2取整法,就是将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以 2,然后取整数部分,剩下的 小数部分又乘以2,直取到小数部分为零为止。如果永远不能为零,就同十 进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是 0还 是1,取舍,如果是零,舍掉,如果是 1,向入一位。换

7、句话说就是0舍1入。 读数要从前面的整数读到后面的整数。二进制转换为十进制不分整数和小数部分,方法(按权相加法)是将二进 制每位上的数乘以权,然后相加之和即是十进制数。二进制转换为十六进制用取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一 位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字 就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低) 位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位 (最低位)添0,凑足四位。将十六进制转换为二进制,取一分四法,即将一位十六进制数分解成

8、四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。十进制转换成十六进制的方法与十进制转换成二进制的方法相同,但不同 的是每次除以16。2分析任务及要求题目内容:通过键盘输入一个 8进制数,通过屏幕提示菜单选择转换成2进制, 10进制或者16进制数并显示。设计要求:根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图的绘制。程序编制:确定软件方案,绘制系统软件流程图,完成汇编程序的编 制。通过对题目进行分析,容易看出本次设计可分为3个部分:输入、进制转换、 输出显示。输入可通过 DOS调用一一0AH输入一个八进制数;进行数值

9、转换; 输出也通过DOS调用一一09H,实现输出并显示。2.1数制转换算法八进制转换成二进制由八进制向二进制转换可将每一位八进制数对应于三位二进制数, 依次进行 替换,转换方式如下所示(左边是一位八进制数,右边是该八进制数所对应的二 进制数):0000; 1001; 2010; 3011; 4100;5101; 6110; 7111;八进制转换成十进制八进制向十进制的转换可通过按基数位权的展开方式来实现,方法是将八进制每位上的数乘以权,然后相加之和即是十进制数。八进制转换成十六进制若将八进制直接向十六进制转换,则比较复杂,故可以将八进制先转换为二 进制再转换为十六进制。将八进制转换为二进制的算

10、法在第一节已经说明,这里不再赘述,故下面只说明二进制转换为十六进制的算法(左边为二进制数,4个一组,右边为16进制):00000; 00011; 00102; 001101004; 01015; 01106;011110008; 10019; 1010A10111100C; 1101 D; 1110E;11113;7;B;F;3程序设计流程3.1绘制程序流程图图3-1程序流程图3.2设计思路首先对原理进行分析,了解不同进制数之间是如何进行转换的, 充分认识汇 编语言的指令系统,掌握各个汇编语言的指令系统,掌握各个汇编指令的功能及 用法,了解各种程序结构(顺序、分支、循环和子程序)的特点。首先定

11、义堆栈段,再定义数据段,在数据段中输入 MEN中要显示的内容, 再建一个表TABLE TABLE中的内容为L1,L2, L3。然后根据题目要求设计简单 的程序流程图,再根据流程图设计出每一个模块的汇编语言程序,然后再通过调用、跳转、转移等方法将各个子程序连接在一起。 这样依据题目要求的汇编程序 就初步完成了。本次利用的软件是 MF2KP首先在MF2KP环境下输入设计的汇编 程序,然后编译、连接、运行。4汇编语言源程序设计4.1堆栈段和数据段程序设计首先定义堆栈段和数据段的程序,程序设计如下所示:DATA SEGMENTMENU DB Please Input Your Choice:1:Bin

12、2,2:Dec10,3:Hex16,0dh,0ah,$Messi db Please in put 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 SEGMENTASSUME CS:CODE,DS:DATA4.2主程序

13、设计MAIN PROC FARASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXAA1:LEA DX,MENUMOV AH,09HINT 21HMOV AH,01HINT 21HSUB AL,30HCMP AL,04HJB DONELEA DX,ERRORMOV AH,09HINT 21HJMP AA1DONE:CMP AL,01HJZ L1CMP AL,02HJZ L2CMP AL,03HJZ L3L1:CALL INOCTCALL FAR CRLFCALL FAR OUTBINCALL FAR CRLFJMP AA1L2:CALL INOCTC

14、ALL CRLFCALLOUTDECCALL CRLFJMP AA1L3:CALL FAR INOCTCALL FAR CRLFCALL FAR OUTHEXCALL FAR CRLFJMP AA1MAIN ENDPMOV AH,4CHINT 21HCODE ENDSEND START4.3输入八进制数程序INOCT PROC NEARLEA DX,MESS1MOV AH,09HINT 21HMOV BX,0INOL1:MOV AH,01HINT 21HCMP AL,0DHJZ INOEXITSUB AL,30HCMP AL,9JBE INOL2SUB AL,7INOL2:MOV CL,3SH

15、L BX,CLOR BL,ALJMP INOL1INOEXIT:RETINOCT ENDP4.4输出二进制数程序OUTBIN PROC NEARLEA DX,MESS2MOV AH,09HINT 21HMOV CX,16OBL1:ROL BX,1MOV DL,BLAND DL,01HOR DL,30HMOV AH,02HINT 21HLOOP OBL1RETOUTBIN ENDP4.5输出十进制数程序OUTDEC PROCLEA DX,MESS3MOV AH,09HINT 21HMOV CX,10000CALLDECL1MOVCX,1000CALLDECL1MOVCX,100CALLDECL1

16、MOVCX,10CALLDECL1MOVCX,1CALLDECL1RETOUTDEC ENDPDECL1 PROC NEARMOV AX,BXMOV DX,0DIV CXMOV BX,DXMOV DL,ALADD DL,30HMOV AH,2INT 21HRETDECL1 ENDP4.6输出十六进制数程序OUTHEX PROCLEA DX,MESS4MOV AH,09HINT 21HMOV CX,4OHL1:ROL BX,1ROL BX,1ROL BX,1ROL BX,1MOV DL,BLAND DL,0FHADD DL,30HCMP DL,39HJBE OHL2ADD DL,7OHL2:MO

17、V AH,02HINT 21HLOOP OHL1RETOUTHEX ENDPCODE ENDSEND START4.7回车键确定程序CRLF PROCMOV AH,02HMOV DL,0DHINT 21HMOV DL,0AHINT 21HRETCRLF ENDP5结果分析调试运行后首先出现的界面是:请输入您的选择:转换为二进制输出则输入1;转换为十进制输出则输入2;转换为十六进制输出则输入3;结果如下图4-1 所示:图5-1请输入您的选择上述选择输入后,就显示:请输入一个八进制数,结果如下图4-2所示:图5-2请求输入一个八进制数此后输入按照界面提示输入相应的数字即可完成各数制间的转换,其算法

18、已在前面详细说明,这里不再赘述E:Masmb inDVVTennpPlease Input Voui? Choicezl :BinS ,2 :Decl0, 3 : Hexl6 LPJ_e4se Input: a Oct nuimJbei*:7ucput Bin? is:9000060000000111Please Input Your Oho ice:1:Bin2,2:PeclS,3:He Xl6图5-3将八进制转换成二进制数输出E:Masmbin- DWTennp.exePlease Input Voui? Clioice=l :Bin2,2 :Lecl0, 3 : HexlG LPleAs

19、e Input a OctS numliea?:7Output Bin2 is:00000000000111Please Input Vcur Clio ice : 1 : Bin2 2: PeclC, 3 : He xl 6 ZPl&ase input a OctS nuinlbev1:11Output DecIQ is:90Q09Please Input Voup Choice iBin2,2 iDeclS.3 : HexlG图5-4将八进制转换成十进制数输出蜀 E:Ma smb in DVTe nn p.exeq回Please Input Voui? Choice=l :Bin2,2 :

20、Decl0, 3 : Hexi6 LPleAse Input a Oct nuinJbe土7Output Bin2 is:Hn0n000000O00111Please Input Vour Choice = 1:Bin25:DeciO3:Hexl 2Please input: a OctS nuinibei1:11Output Decl0 is:UM009Please Input Voup Choiee:Din2,2 iDeclS,.?! HexlGJPlease input 咼 Oct8 nLimber: 1?Output HxlG is:3QHFPlease Input Youp Cha

21、ice:1:Bin2,2:Decl0,3:Hexlfi图5-5将八进制转换成十六进制数输出6小结与体会“微机原理与系统设计”作为电子信息类本科生教学的主要基础课之一 ,课 程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题 ,以emeu8086CPl为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工 作模式,从而使学生能较清楚地了解微机的结构与工作流程 ,建立起系统的概念。这次微机原理课程设计,在设计的这些日子里,可以说得是甘苦与共,甘的 是可以学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多 在书本上所没有学到过的知识。深刻了解了老师生科经常强调的东西,比

22、如画流 程图的习惯。起先我并不十分在意。但是,这次课程设计完全颠覆了我以前的认 识,在这次课程设计中,画程序方框图显得尤为重要。通过流程图,在做设计的 过程中,我清楚的知道每一步要做什么, 每一步要完成什么任务,而且在程序调 试的过程中也有利于查错。相比之前错误的做法,究其原因还是因为课本上用到 的基本都是一些基础性质的程序,思路已经相当清晰再画流程图显得多余。其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段编 程的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每 个寄存器的内容以确保程序的正确性上都有了很大程度的提高。通过这次课程设计使我懂得了理论与实际相结

23、合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论, 才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在实际设计的过程中遇到问题,可以说是难以预测的,各种各样的问题都会出现,同时 也会在设计的过程中发现自己的不足之处, 例如对以前所学的知识掌握不够牢固、 理解的不够深刻。通过这次课设我掌握了怎么去处理实际编程中出现的各类问题, 其次在编程中发现了自己的弱点,最后巩固了理论知识,提高了自己的动手能力。这次微原课设圆满完成,个中滋味确是只有自己亲身经历才明白。 这次的设 计,让我对微机原理的理解又更深了一层, 提高了我将理论与实际相结合和

24、解决 问题的能力。同时,我要感谢帮助我的小伙伴们,他们的建议,指导,帮我分析 让我顺利完成课设。通过这次课设,作为工科生的我应该谨记:程序只有在经常 的读和写中才可提高,在以后学习编程语言的时候,应该要多动手实践编程,实 践出真知是亘古不变的真理。参考文献1 潘峰主编微型计算机原理与汇编语言第三版.西安:电子工业出版社,20032 韩志军.微机原理课程的教学改革与实践J.南京工程学院学报(社会科学版).2003.123 杨素行微型计算机系统原理及应用,北京,清华大学出版社,2004年4 微机实验及课程设计教程(试用版2.0 ),东南大学微机系统与接口课程组,2009年2月周佩玲微型计算机原理与

25、接口技术电子工业出版社,2005 谭浩强.微型计算机原理及应用.清华大学出版社,2001附录以下为实际完整程序段DATA SEGMENTMENU DB Please Input Your Choice:1:Bin2,2:Dec10,3:Hex16,0dh,0ah,$Messi db Please in put 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!

26、PLEASE INPUT YOUR CHOICE AGAIN , $TABLE DW AA1, L1,L2 ,L3DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXAA1:LEA DX,MENUMOV AH,09HINT 21HMOV AH,01HINT 21HSUB AL,30HCMP AL,08HJBE DONELEA DX,ERRORMOV AH,09HINT 21HJMP AA1DONE:CMP AL,01HJZ L1CMP AL,02HJZ L2CMP AL,03HJZ L3L1:CALL INO

27、CTCALL CRLFCALL OUTBINCALL CRLFJMP AA1L2:CALL INOCTCALL CRLFCALLOUTDECCALL CRLFJMP AA1L3:CALL INOCTCALL CRLFCALLOUTHEXCALL CRLFJMP AA1CRLF PROCMOV AH,02HMOV DL,0DHINT 21HINT 21HRETCRLF ENDPINOCT PROC NEARLEA DX,MESS1MOV AH,09HINT 21HMOV BX,0INOL1:MOV AH,01HINT 21HCMP AL,0DHJZ INOEXITSUB AL,30HCMP AL

28、,9JBE INOL2SUB AL,7INOL2:MOV CL,3SHL BX,CLOR BL,ALJMP INOL1INOEXIT:RETINOCT ENDPOUTBIN PROC NEARLEA DX,MESS2MOV AH,09HINT 21HMOV CX,16OBL1:ROL BX,1MOV DL,BLAND DL,01HOR DL,30HMOV AH,02HINT 21HLOOP OBL1RETOUTBIN ENDPOUTDEC PROCLEA DX,MESS3MOV AH,09HINT 21HMOV CX,10000CALLDECL1MOVCX,1000CALLDECL1MOVCX

29、,100CALLDECL1MOVCX,10CALLDECL1MOVCX,1CALLDECL1RETOUTDEC ENDPDECL1 PROC NEARMOV AX,BXMOV DX,0DIV CXMOV BX,DXMOV DL,ALADD DL,30HMOV AH,2INT 21HRETDECL1 ENDPOUTHEX PROCLEA DX,MESS4MOV AH,09HINT 21HMOV CX,4OHL1:ROL BX,1ROL BX,1ROL BX,1ROL BX,1MOV DL,BLAND DL,0FHADD DL,30HCMP DL,39HJBE OHL2ADD DL,7OHL2:MOV AH,02HINT 21HLOOP OHL1RETOUTHEX ENDPCODE ENDSEND START

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!