微机原理课设数制转换_第1页
微机原理课设数制转换_第2页
微机原理课设数制转换_第3页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、签名:目录精选资料,欢迎下载摘要 . I1 原理分析 . 22 分析任务及要求 . 42.1 数制转换算法 . 42.1.1 八进制转换成二进制 42.1.2 八进制转换成十进制 . 42.1.3 八进制转换成十六进制 . 43 程序设计流程 . 53.1 绘制程序流程图 . 53.2 设计思路 . 64 汇编语言源程序设计 . 74.1 堆栈段和数据段程序设计 . 74.2 主程序设计 . 74.3 输入八进制数程序 . 94.4 输出二进制数程序 . 94.5 输出十进制数程序 . 104.6 输出十六进制数程序. 114.7 回车键确定程序 . 125 结果分析 . 136 小结与体会

3、. 16参考文献 . 17附录 . 18摘要本次程序设计主要是利用汇编语言中的 DOS调用和各种进制间的转换来实现通过键盘 输入一个8进制数,在屏幕上提示菜单选择转换成2进制,10进制或者1 6进制数并显示。汇编语言是面向机器的程序设计语言。汇编语言比机器语言易于读写、调试和修改, 同时也具有执行速度快, 占用内存空间少等优点, 但在编写复杂程序时具有明显的局限性, 汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植,本次设计主要是利 用 8086 汇编语言进行设计。常说汇编语言过时,是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然 是程序员必须了解的语言, 在某些行业与领域

4、, 汇编是必不可少的, 非它不可适用。 只是, 现在计算机最大的领域为IT软件,也是我们常说的 Windows编程,在熟练的程序员手里, 使用汇编语言编写的程序,运行效率与性能比其它语言写的程序时成倍的优秀,但是代价 是需要更长的时间来优化,假如是对计算机原理及编程基础不扎实,实在是得不偿失,对 比现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司 不可以让一个团队使用汇编语言来编写所有的东西,花几倍甚至是几十倍的时间,不如使 用其它语言来完成只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市 场经济下得必然结果。但是,这也并不代表汇编语言是没有用的、不需

5、要学的,相反,只有在理解和掌握汇 编语言的基础上,才能更好的使用其它高级语言。关键词:汇编,汇编语言,机器语言, DOS调用数制转换课程设计1 原理分析 进位计数制是人们利用符号来计数的方法。一种进位计数制包含一组数码 符号和两个基本因素。数码是用不同的数字符号来表示一种数制的数值,这些 数字符号称为”数码” 。基是数制所使用的数码个数称为”基” 。权是某数制每 一位所具有的值称为”权” 。十六进制 十进制 (Decimal)八进制 (Octal)二进制 (Binary)0.1在计算机内部采用二进制计数制,但在实际应用中,需要计算机处理的信 息是多种多样的,如各种进位制的数据,不同语种的文字符

6、号和各种图像信息 等。但在计算机中采用的是二进制计数制。 本次课程设计通过所学的微机原理, 用汇编语言编写程序,实现二进制转换成十进制或十六进制,十进制转换成二 进制或十六进制,十六进制转换成二进制或十进制。十进制转换为二进制整数部分的方法叫做除 2 取余法,每次将整数部分除 以 2,余数为该位权上的数,而商继续除以 2,余数又为上一个位权上的数,这 个步骤一直持续下去, 直到商为 0 为止,最后读数时候, 从最后一个余数读起, 一直到最前面的一个余数。小数部分的方法叫乘 2 取整法,就是将小数部分乘 以 2,然后取整数部分,剩下的小数部分继续乘以 2,然后取整数部分,剩下的 小数部分又乘以

7、2,一直取到小数部分为零为止。如果永远不能为零,就同十 进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是 0 还 是 1,取舍,如果是零,舍掉,如果是 1 ,向入一位。换句话说就是 0 舍 1 入。 读数要从前面的整数读到后面的整数。二进制转换为十进制不分整数和小数部分,方法(按权相加法)是将二进 制每位上的数乘以权,然后相加之和即是十进制数。二进制转换为十六进制用取四合一法,即从二进制的小数点为分界点,向 左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一 位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字 就是我们所求的十六进制数。如果向

8、左(向右)取四位后,取到最高(最低) 位时候,如果无法凑足四位,可以在小数点最左边(最右边) ,即整数的最高位 (最低位)添 0,凑足四位。将十六进制转换为二进制,取一分四法,即将一位十六进制数分解成四位 二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。十进制转换成十六进制的方法与十进制转换成二进制的方法相同,但不同 的是每次除以 16。2 分析任务及要求题目内容:通过键盘输入一个 8进制数,通过屏幕提示菜单选择转换成2进制,10 进制或者 16 进制数并显示。 设计要求:根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。图纸绘制:确定硬件方案,完成完整硬件系统连线图

9、的绘制。 程序编制:确定软件方案,绘制系统软件流程图,完成汇编程序的编 制。通过对题目进行分析, 容易看出本次设计可分为 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

10、八进制转换成十进制八进制向十进制的转换可通过按基数位权的展开方式来实现, 方法是将八进制每位上的数乘以权,然后相加之和即是十进制数。2.1.3 八进制转换成十六进制若将八进制直接向十六进制转换, 则比较复杂, 故可以将八进制先转换为二进制再转换为十六进制。 将八进制转换为二进制的算法在第一节已经说明, 这里 不再赘述,故下面只说明二进制转换为十六进制的算法(左边为二进制数, 4 个 一组,右边为 16 进制):00000; 00011; 00102; 001101004; 01015; 01106;011110008; 10019; 1010A10111100C; 1101 D; 1110E;

11、11113;7;B;F;3程序设计流程3.1绘制程序流程图图3-1程序流程图3.2设计思路首先对原理进行分析,了解不同进制数之间是如何进行转换的, 充分认识汇 编语言的指令系统,掌握各个汇编语言的指令系统,掌握各个汇编指令的功能及 用法,了解各种程序结构(顺序、分支、循环和子程序)的特点。首先定义堆栈段,再定义数据段,在数据段中输入 MEN中要显示的内容, 再建一个表TABLE TABLE中的内容为L1,L2, L3。然后根据题目要求设计简单 的程序流程图,再根据流程图设计出每一个模块的汇编语言程序,然后再通过调用、跳转、转移等方法将各个子程序连接在一起。 这样依据题目要求的汇编程序 就初步完

12、成了。本次利用的软件是 MF2KP首先在MF2KP环境下输入设计的汇编 程序,然后编译、连接、运行。4 汇编语言源程序设计4.1 堆栈段和数据段程序设计首先定义堆栈段和数据段的程序,程序设计如下所示: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:',0d

13、h,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 主程序设计MAIN PROC FARASSUME CS:CODE,DS:DATASTAR

14、T: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 INOCTCALL CRLFCALL OUTDECCALL CRLFJMP AA1L3:CAL

15、L 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,3SHL BX,CLOR BL,ALJMP INOL1 INOEXIT:RET IN

16、OCT 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,100CALLDECL1MOVCX,10CALLDECL1MOVCX,1CALLDECL1RE

17、TOUTDEC ENDPDECL1 PROC NEARMOV AX,BXMOV DX,0 DIV 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:MOV AH,02HINT 21HLOOP OHL1RETOUTHEX

18、 ENDPCODE ENDSEND START4.7 回车键确定程序CRLF PROCMOV AH,02HMOV DL,0DHINT 21HMOV DL,0AHINT 21HRETCRLF ENDP5结果分析调试运行后首先出现的界面是:请输入您的选择:转换为二进制输出则输入1;转换为十进制输出则输入2;转换为十六进制输出则输入3;结果如下图4-1所示:E M a 5fnb i n DVVTe m p r-vePlease Input Voiii? Clioice:! :BinS ,23 : Hexl6图5-1请输入您的选择上述选择输入后,就显示:请输入一个八进制数,结果如下图4-2所示:养 E

19、AMasm h n 7XVTemp.exePlease Imput Voui Choice ±1 -BlnSS -DeclQ, 3 - Hiexl6 jLPlease input; a. 0ct8 nunJber-图5-2请求输入一个八进制数此后输入按照界面提示输入相应的数字即可完成各数制间的转换,其算法已在前面详细说明,这里不再赘述£ rn' 7)'?i/Tennr:'exePlease Input Vour Choice -1 -Bd.n2>2!:DedQ, 3 : Hexl6图5-3将八进制转换成二进制数输出LPleAse Input a

20、 OctS numliea?:7Output Bin2 is:00000000000111Please Input Vcur Clio ice : 1 : Bin2 2: PeclC, 3 : He xl 6 input a OctS nuinlbev1:11Output DecIQ is:30309Please Input Voup Choice iBin2,2 iDeclS.3 : HexlG图5-4将八进制转换成十进制数输出蜀 E :M a sm b in DVVTe nn p.exePlease Input Voui? Clioice=l :BinS ,2 :Decl0, 3 : He

21、xl6 LPleAse Input a Oct® numJbei':7Output Bin2 is:Hn0n000000O00111Please Input Vour Choice:Bin233:Hexl6 2Please input: a QctC number:11Output DecIQ is:UM009Please Input Voup Choice = 1:Bin2,2iDeclQ,3!HexlG Please input 咼 Oct8 nLimber: 1?Output HexlG is:3QHFPlease Input Youp Cha ice:1:Bin2,2

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

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

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

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

26、程 (试用版 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 'Outp

27、ut 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: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 INOCTCALL CRLFCALL OUTBINCALL CRLFJMP AA1L2:CALL INOCTCALL CRLFCALL OUTDECCALL CR

温馨提示

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

评论

0/150

提交评论