微机课设2数制转换3说课材料.docx
- 文档编号:9709265
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:16
- 大小:91.54KB
微机课设2数制转换3说课材料.docx
《微机课设2数制转换3说课材料.docx》由会员分享,可在线阅读,更多相关《微机课设2数制转换3说课材料.docx(16页珍藏版)》请在冰豆网上搜索。
微机课设2数制转换3说课材料
微机课设2数制转换3
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
数制转换3
任务内容:
通过键盘输入一个8进制数,通过屏幕提示菜单选择转换成2进制,10进制或者16进制数并显示。
要求完成的主要任务:
设计方案的选择与确定:
根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。
图纸绘制:
确定硬件方案,完成完整硬件系统连线图的绘制。
程序编制:
确定软件方案,绘制系统软件流程图,完成汇编程序的编制。
说明书撰写:
完成课程设计说明书的撰写,字数不少于3000字。
时间安排:
资料检索与收集2天
系统方案设计与确定1天
系统设计与程序编写3天
说明书撰写3天
答辩1天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
本次程序设计主要是利用汇编语言中的DOS调用和各种进制间的转换来实现通过键盘输入一个8进制数,在屏幕上提示菜单选择转换成2进制,10进制或者16进制数并显示。
汇编语言是面向机器的程序设计语言。
汇编语言比机器语言易于读写、调试和修改,同时也具有执行速度快,占用内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植,本次设计主要是利用8086汇编语言进行设计。
常说汇编语言过时,是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。
只是,现在计算机最大的领域为IT软件,也是我们常说的Windows编程,在熟练的程序员手里,使用汇编语言编写的程序,运行效率与性能比其它语言写的程序时成倍的优秀,但是代价是需要更长的时间来优化,假如是对计算机原理及编程基础不扎实,实在是得不偿失,对比现在的软件开发,已经是市场化的软件行业,加上高级语言的优秀与跨平台,一个公司不可以让一个团队使用汇编语言来编写所有的东西,花几倍甚至是几十倍的时间,不如使用其它语言来完成只要最终结果不比汇编语言编写的差太多,就能抢先一步完成,这是市场经济下得必然结果。
但是,这也并不代表汇编语言是没有用的、不需要学的,相反,只有在理解和掌握汇编语言的基础上,才能更好的使用其它高级语言。
关键词:
汇编,汇编语言,机器语言,DOS调用
数制转换程序设计
1设计任务及要求
题目内容:
通过键盘输入一个8进制数,通过屏幕提示菜单选择转换成2进制,10进制或者16进制数并显示。
设计要求:
根据题目要求,参考相关文献资料,选择合适的软硬件设计方案。
图纸绘制:
确定硬件方案,完成完整硬件系统连线图的绘制。
程序编制:
确定软件方案,绘制系统软件流程图,完成汇编程序的编制。
2分析任务及要求
通过对题目,容易看出本次设计可分为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;
2程序设计流程
2.1绘制程序流程图
NY
N
图2-1程序流程图
2.2设计思路
首先对原理进行分析,了解不同进制数之间是如何进行转换的,充分认识汇编语言的指令系统,掌握各个汇编语言的指令系统,掌握各个汇编指令的功能及用法,了解各种程序结构(顺序、分支、循环和子程序)的特点。
首先定义堆栈段,再定义数据段,在数据段中输入MENU中要显示的内容,再建一个表TABLE,TABLE中的内容为L1,L2,L3。
然后根据题目要求设计简单的程序流程图,再根据流程图设计出每一个模块的汇编语言程序,然后再通过调用、跳转、转移等方法将各个子程序连接在一起。
这样依据题目要求的汇编程序就初步完成了。
本次利用的软件是MF2KP,首先在MF2KP环境下输入设计的汇编程序,然后编译、连接、运行。
3汇编语言源程序设计
3.1堆栈段程序设计
首先定义堆栈段的程序,程序设计如下所示:
STACKSEGMENT
DB200DUP(?
)
STACKENDS
3.2数据段程序设计
再定义数据段的程序,程序设计如下所示:
DATASEGMENT
MENUDB'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'
DATAENDS
3.3主程序设计
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
AA1:
LEADX,MENU
MOVAH,09H
INT21H
MOVAH,01H
INT21H
SUBAL,30H
CMPAL,04H
JBDONE
LEADX,ERROR
MOVAH,09H
INT21H
JMPAA1
DONE:
CMPAL,01H
JZL1
CMPAL,02H
JZL2
CMPAL,03H
JZL3
L1:
CALLINOCT
CALLFARCRLF
CALLFAROUTBIN
CALLFARCRLF
JMPAA1
L2:
CALLINOCT
CALLCRLF
CALLOUTDEC
CALLCRLF
JMPAA1
L3:
CALLFARINOCT
CALLFARCRLF
CALLFAROUTHEX
CALLFARCRLF
JMPAA1
MAINENDP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3.4输入八进制数程序
INOCTPROC
LEADX,MESS1
MOVAH,09H
INT21H
MOVBX,0
INOL1:
MOVAH,01H
INT21H
CMPAL,0DH
JZINOEXIT
SUBAL,30H
CMPAL,9
JBEINOL2
SUBAL,7
INOL2:
MOVCL,3
SHLBX,CL
ORBL,AL
JMPINOL1
INOEXIT:
RET
INOCTENDP
3.5输出二进制数程序
OUTBINPROC
LEADX,MESS2
MOVAH,09H
INT21H
MOVCX,16
OBL1:
ROLBX,1
MOVDL,BL
ANDDL,01H
ORDL,30H
MOVAH,02H
INT21H
LOOPOBL1
RET
OUTBINENDP
3.6输出十进制数程序
OUTDECPROC
LEADX,MESS3
MOVAH,09H
INT21H
PUSHBX
MOVAX,BX
MOVDX,0
MOVCX,10000
DIVCX
MOVBX,DX
MOVDL,AL
ORDL,30H
MOVAH,02H
INT21H
MOVAX,BX
MOVDX,0
MOVCX,1000
DIVCX
MOVBX,DX
MOVDL,AL
ORDL,30H
MOVAH,02H
INT21H
MOVAX,BX
MOVCL,100
DIVCX
MOVBX,DX
MOVDL,AL
ORCL,30H
MOVAH,02H
INT21H
MOVAX,BX
MOVCL,10
DIVCL
MOVBL,AH
MOVDL,AL
ORDL,30H
MOVAH,02H
INT21H
MOVDL,BL
ORDL,30H
INT21H
POPBX
RET
OUTDECENDP
3.7输出十六进制数程序
OUTHEXPROC
LEADX,MESS4
MOVAH,09H
INT21H
MOVCX,4
OHL1:
ROLBX,1
ROLBX,1
ROLBX,1
ROLBX,1
MOVDL,BL
ANDDL,0FH
ADDDL,30H
CMPDL,39H
JBEOHL2
ADDDL,7
OHL2:
MOVAH,02H
INT21H
LOOPOHL1
RET
OUTHEXENDP
3.8回车键确定程序
CRLFPROC
MOVAH,02H
MOVDL,0DH
INT21H
MOVDL,0AH
INT21H
RET
CRLFENDP
4结果分析
调试运行后首先出现的界面是:
请输入您的选择:
转换为二进制输出则输入1;转换为十进制输出则输入2;转换为十六进制输出则输入3;;结果如下图4-1所示:
图4-1请输入您的选择
上述选择输入后,就显示:
请输入一个八进制数,结果如下图4-2所示:
图4-2请求输入一个八进制数
此后输入按照界面提示输入相应的数字即可完成各数制间的转换,其算法已在前面详细说明,这里不再赘述。
5小结与体会
"微机原理与系统设计"作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,以Intel8086CPU为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。
这次微机原理课程设计历时十天,在整整十天的日子里,可以说得是甘苦与共,甘的是可以学到很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序调试的过程中也有利于查错。
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说是困难重重,这毕竟是第一次做,难免会遇到各种各样的问题,同时也会在设计的过程中发现自己的不足之处,例如对以前所学的知识掌握不够牢固、理解的不够深刻。
好在这次的课程设计虽然遇到很多的困难,但终于是完成了。
个中滋味确实是只有自己才明了啊。
但也好在了这次的设计,让我对微机原理的理解又更深了一层,提高了我将理论与实际相结合和解决问题的能力。
同时在这次课设的过程中,我要感谢好多给我帮助的同学们,是他们帮着我解决问题、教我如何分析,如何分成一个模块一个模块的编写程序,我才得以还算顺利的完成此次课程设计。
同时通过此次的课程设计,给我感慨最深的莫过于:
程序只有在经常的读和写中方可提高,这应该算是我此次课设的一大收获了,这也警醒了我以后学习编程语言,应该要多写多读程序。
参考文献
[1]潘峰主编.微型计算机原理与汇编语言.第三版.西安:
电子工业出版社,2003
[2]韩志军.《微机原理》课程的教学改革与实践[J].南京工程学院学报(社会科学版).2003.12
[3]杨素行《微型计算机系统原理及应用》,北京,清华大学出版社,2004年
[4]微机实验及课程设计教程(试用版2.0),东南大学《微机系统与接口》课程组,2009年2月
[5]周佩玲.微型计算机原理及接口技术.电子工业出版社,2005
[6]谭浩强.微型计算机原理及应用.清华大学出版社,2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 数制 转换 材料