《微机原理与接口技术课程设计-显示系统时间程序.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计-显示系统时间程序.docx(24页珍藏版)》请在课桌文档上搜索。
1、成都学院微机原理与接口技术课程设计题目:显示系统时间的程序学生姓名:钮学号:201420314109院系:信息工穆与科学学院专业:电气自动化技术指导老婶:杨/中1设计的目的要求1.1 设计目的11.2 设计任务21.3 具体要求22任务原理分析22.1任务总体分析22.2子程序分析32.2.1子程序132.2.2子程序242. 2.3子程序372.3拓展设计及功能说明924程序设计的主流程图9原相方3方案比较io3.3.3.3.23. 2.1原理说明4程序的调试过程5调试过程中的问题6心得体会17参考文献18显示系统时间的程序1设计的目的要求1.1设计目的1 .驾驭中断的运用方法.2 .驾驭B
2、1.oS系统功能调用.3 .驾驭基本的显存读写技术.4 .学会用汇编语言编写一个较完整的好用程序,培育自己的动手操作实力。5 .学习程序设计的基本思路和方法,编程、调试、撰写报告等.1.2 设计任务采纳汇编语言设计一个显示系统时间程序,在屏幕上以“时:分:杪”的形式显示本机系统的时间。按Q退出程序。1.3 具体要求(1)设it任务及要求分析(2) 方案比较及认证说明(3系统原理附述(4) 软件设计课鹿须要说明:软件思!,流程图,源程序及程序注林(5) 网试记录及结果分析(6)总结(7)参考资料(8)的录:芯片资料或程序清单,软件演示屏幕拷贝图或便件实物图2任务原理分析2.1任务总体分析本课设的
3、设计任务要求在运行时,住屏窑上以“时:分:秒”的形式显示本机系统的时间,并且按Q退出程序。由此可知,首先定义光标显示界面,然后调用B1.OS中断,读取系统时间,并将调用的用二进制表示的时间数转换成ASCII码,并将时间数存入显存区,最终将存在系统内存区的时间用字符串的形式显示出来。由于获得了的系统时间不会自动刷新,所以我们要设计成循环的方式来不断获得系统的时间,这样就形成了会跳动的电子钟了。程序旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可输入“Q”即可退出。假如用图形方式显示效果会更好,而且需留意设置显示时候的背景颜色。在本课程设计中,主要须要三个子程序来完成。2.2子程序分
4、析2.2.1子程序1子程序I的功能就是设置光标位置。其基本原理是:在子程序I中,我用到了显示耦驱动程序(INTIOH)中AH=2的功能。AH=2的功能是设置光标位置,入口参数:(DH,DD=行、列:BH=页号图形模式为0)。为了使显示的时间在DOS屏幕中的中间显示,DX设置为0A24H,即DH=OAH,D1.=24H,就是在OAH行,24H列。假如想变更时间显示的位置,只要变更DX的数值就可以达到目的。由于在第零页中定位,可用SUBBH,BH来完成此操作。子程序1的源程序如下:MOVBX.5EHMOVAX.I301HINTIOH;设艮光标位置MOVAH.02HMOVDH.0HMOVD1.24H
5、;dh显示行(X坐标):d1.显示列(y坐标)MOVBH.0;页码为OINTIOH子程序1的流程图如图1所示。图】/印序I的近程图2.2.2子程序2子程序2的功能是把二进制数转换为十进制ASQ1.码输出。其基本原理是:首先要完成二进制到十进制数的转换,一般采纳“除10取余”法来完成,其大致过程如下:将待转换的数(在AX中)除以10,得到第一个商和余数,此第一个余数就是所求的十进制数的个位:再用第一个商除以10,得到其次个商和余数,此其次个余数就是所求十进制数的十位:重城这过程直至商为0.此时的余数就是所求十进制数的最高位。在内存中安排缓冲区,用来存放以上分别出来的十进制数的每位,然后再逐个转换
6、成ASCII码,转换成ASa1.码的过程很简洁,就是给每个十进制位加上30H即可:最终送显示器输出。从转换的过程可以看出,先分别出来的是十进制数的低位,要后显示:后分别出来的是十进制数的高位,应当先显示。因此在编程时,我们可以利用堆栈操作中“先进后出、后进先出的特性,当分别出各十进制位时依次入栈,要逐个转换成ASC1.I码送显示时依次出栈。子程序2的流程图如下:Bin100utPRoC;二进制转十进制ASCuI1.码输出子程序PUSHDIPUSHDXPUSHCXPUSHAXMOVCX101.EADI1TBUF:去缓冲区首地址BINI:PUSHCXMOVX.DXMOVDX1OMOVCX110DI
7、VCX;AX内容除以DX内容,商在AX,余数在DXXCHGX,DX;交换AX,DX的内容ADD1.,30H;余数加30H,入栈打算输出MOVDI,A1.INCDIPoPCXINCCX;累加每谑用次要输出的位数CMPDX1O;商和0比较JNZBIN1.;不等于。转B1.N1.CMPCX11;累加器和1比较JNZBIN2;不等于1转BIN2MOVAH,2;等于1位,先在改位前输出0MOVD1.10,INT21HBIN2:DECDI;等于。输出十进制数的各位MOVA1.,DICA1.1.STDOUTPOPAX:宏原现场POPCXPOPDXPOPDIRETBIN1.OO1.iTENDP了程序2的流程图
8、如图2所示。1.OOPBIN2子程序3的功能是读取系统的时间。其基本原理是调用DOS中断功能中的INT2IH,当AH=2CH时,读取系统的时间,使得CH:C1.=时:分,DH:D1.=秒:秒/100,此程序中精确到秒,这里只要提取时、分、秒、并在内存中安排一线冲区,用来存:放时间,不过此时的时、分、秒都是二进制的,因此要进行二进制和T进制的转换因此进入IiCDASC1.子程序进行转换成相应的ASCII码字符。子程序的源程序如下:TIMEPROCNEAR;显示时间子程序DISP1.Y1:MOVSI,0MOVBX,100;除以100取整、取余DIVB1.MOV1.1.,2CH;取系统时间INT21
9、HMOV1.,C1.1.;把小时数给a1.CA1.1.BCDASC;将时间数值转换成ASC1.1.码字符INCS1.MOV1.,C1.;把分数给H1.CA1.1.BCDASCINCS1.MOVA1.,DH;把秒数给H1.CA1.1.BCDASCMOVBP,OFFSETDB1.iFFER;输出:,作为分隔符MOVDX,OCODIIMOVCX,8MOVBX,005EHMOVX,13011.1.RE:MOVCX,OFFFFH;延时DECBX;bx减1JNZRE;假如不等于零,转移到reMOVAH,O1.H;读键盘缓冲区字符到AH寄存器INT16H;读磁盘变更状态JEDISP1.AY1.;相等转移到d
10、isp1.ay1.程序JMPSTARTMOVAH,ICHINT21H;返dosRETTIMEENDP子程序3的流程图如图3所示。START图3子和中3的次和图2.3拓展设计及功能说明在本保设中,在完成老师要求的ASCII码的转换等茶本任务以外,我还在显示方式中的背景颜色和字体颜色等方面做了拓展。为了使屏幕显示更加美观,同时也可以便利地变更字体颜色,我采纳的是显示器输出中断调用即为INTIoH,其中的0号功能就是指设置显示方式,入口参数:AH=O(功能号),A1.=设置方式07),出口参数:无。一共有8中不同的显示方式,通过修改A1.的值即可。2.4程序设计的主流程图其程序设计的主流程图如图4所
11、示:1C.京)图4程序设计的I:流科图3方案比较3.1方案13.1.1 原理说明首先在数据段开拓一显示缓冲区,用来存储系统时间。然后调用BIOS中断,返回系统时间,井将来返回的二进制时间转换成ASCH码,分别将来小时数、分钟数、秒数存入显示缓冲区。依据输入的提示,若输入为“r时,则通过写显存将时间显示出来,并且运用了延时设置CX,进行缓冲,对BX递减1并推断BX,当结果为。时,然后读取键盘绫冲区字符,若键盘缓冲区有新的字符输入,则跳入START重新起先,若,没有则接着从系统读取系统时间,程序旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可输入“Q”即可退出。在本方案中用到了我以上
12、介绍的三个子程序。3.1.2 相关理论学问I)、B1.OS功能调用:在存储器系统中,内存:器裔端8K的RoM中存放有基本输入输出系统即为basicInputZOutputSystem,BIOS例行程序。BIOS给PC系列的不同微处理器供应了兼容的系统加电自检、引导装入、主要I/O设备的处理程序以及按口限制等功能模块来处理全部的系统中断。运用BIOS功能调用,给程序员编程带来极大便利。程序员不必了硬件的具体细微环节,可干脆运用指令设置参数,并中断调用BIOS例行程序,所以利用BIOS功能调用编写的程序简洁,可读性好,而且易于移植。调用DOS或BIOS功能时,有以下几个步骤:(1) .将调用参数装
13、入指定的揖存器。(2),如需功能调用号,把它装入AH。(3),如需子功能调用号,把它装入AJ、按中断号调用DoS或BIOS.(5)、检杳返回参数是否正确。2),ASCn的转换与扫描码:键盘是计算机版基本的一种输入设备,用来输入信息,以达到人机对话的目的,当在键盘上“按下”或“放开”一个键时,假如键盘中断是允许的(21H端口的第一位等于0),就会产生一个类型9的中断,并转入到B1.OS的键盘中断处理程序。非ASeH码键产生一个指定的操作。在方案1中就用到了通过单个字符的输入来对菜单的项进行选择,这样的程序也称为交互程序。3),显示器输出中断调用:】0H中断调用为显示器中断,共有17种功能。下面列
14、出这次课设程序设计时可能须要的几种功能的运用状况。(1),设置显示方式(0号功能入口参数:AH=O(功能号),A1.=设置方式(07).出口参数:无。其部分显示方式的8中状况如表1所示:A1.显示方式O40X25黑白文本方式140X25彩色文本方式280X25黑白文本方式380X25彩色文本方式4320X200彩色图形方式5320X200黑白图形方式6610X200黑白图形方式780X25黑白文本方式表18种不同的显示方式(2)、设置光标类型(1号功能)入口参数:AH=I(功能号),CH=光标起先行,C1.=光标结束行。出口参数:无。依据CX给出光标的大小。(3)、设置光标位置(2号功能)入口
15、参数:AH=2(功能号),BH=页号,DH=行号,D1.=列号。出口参数:无。依据DX确定了光标位置.(4)、读当前光标位置(3号功能)入口参数:AH=3(功能号),BH=页号。出口参数:DH=行号,D1.=列号,CX=光标大小。3.1.3方案1的流程图其方案1的流程图如图4所示:3.2方案23.2.1原理说明本方案来纳调用几个子程序的思想来完成系统时间的显示,首先取中断向星,保留原有中断,然后设置光标的位置,按课设任务的要求,应当设置在屏招的中心。接着调用BIOS中断的日时钟(INTIAH),读取系统的时间,然后再调用了程序1将小时的数值转化为ASCI1.码,并I1.显示出来,再调用显示分号
16、的子程序,分钟和秒钟的转化和显示依次和小时的同理.而在了程序1中乂嵌套了两个子程序,个是将数值转为ASCI【码的了程序另个是将字符显示在屏幕上的子程序。在方案2中,用到了和方案1差不多的理论学问,比如说也用到了BIOS中断的INTIOH的功能中断,也用到了键盘扫描码等等。这里就不再赘述。但是在方案2中,牧多的用到了子程序调用的思想。在编程方面,与方案I不同的是,在方案2中我采纳了另种方法来将数值转化为ASCI1.码,即将数值循环的除以10得到的商即为所转化的十进制的数值,但是这种方法比较原始,没有什么技巧性。而且在本方案中较多的运用了子程序的调用,过程显得比较困难。方案1的程序比较简洁明白,思
17、路也比较清晰,综上所述,我选择方案%4程序的调试过程(1)编译T汇编源文件,命名为USrIU(2)asm将生成一个OBJ文件,假如有程序有错误,则提示不能生成OBJ文件,那么就要检查源程序中的错误,并改正。(3)点击连接,然后点击运行,即可显示结果.结果如图所示.假如要退出程序,从键盘中输入“Q”即可。分析:谑试屏幕上显示的提示语与系统时间的位置都可通过前面介绍的内容来变更,JI程序可从键盘中输入“Q”来退出,很便利简洁。而且编拧可以依据自己喜爱的颜色来变更字体和背景的颜色。程序所显示的结果如图5所示。图5运行的结果显示当键盘输入Q”时,程序的显示如图6所示.Q.非使用中Uord3.ExeP1
18、.EftSEINPUTIME(TQUI5调试过程中的问题及解决方法首先是在编程的过程中,在如何运用中断程序来读取系统时间上遇到了难题,因为在平常的理论课上,这一方面接触的比较少,用什么形式的中断实现功能,对中断的初始化、具体设置、中断返回还不是很清晰,对中断向量表的装载也比较模糊,由于遇到了这些,我只好先停下我的编程,去图书馆借了清华高校出版社的6汇编语言程序设计等几本书,仔细翻阅了其中关于中断功能的学问,也从网上下载了些例题和功能介绍来探讨学习。在我重点探讨了中断过程,通过对这内容的学习之后,最终对中断有了具体的相识,在设计程序时也简洁了许多。编语成功,但是有警否!索其次是在程序调试的过程中
19、,当我按下编译的按键时,虽然显示了是编洋胜利,但是下面却有两个警告(Warning)如图7所示。APA4XIAKOVAHz1INT21HCHPA1.,54HJNEBCA1.1.TIMEB:CMPA1.zS1.HJNESTARTNOVAHz4CHINT21HTIKEPROCNEARDISP1.Y1.:NOVSIzO1HOVIBXz1001.行Reservedwordusedetssymbo1.:STACK8fTReservedwordusedassymbo1.:STR图7调试过程中的IHiM在仔细检查后发觉是由于STACK和ATR的位置和格式有问题,在修改了以后,将程序保存后再编译时,则显示编洋
20、胜利,而且没有警告。总之,在编程和调试过程中都有遇到西不会的地方,但在经过探讨和修改之后,都克服这些难题,最终完成所要求的任务。6心得体会做了两个星期的微机原理课程设计之后,我从中发觉了自己还有许多不会的东西,也学到了许多学问。虽然这学期我们学习了微机原理这门课,对汇编语言有了肯定的了解和驾驭,也有相应的微机原理试验课让我们加强实践,但是真正轮到自己放手去做时,才发觉面对些以前没遇到过的问题,要自己仔细地去探讨和分析,当最终看到自己的编写的程序调试胜利的时候,我真的觉得很快乐,有种小小的成果感油然而生。首先是编写程序的过程。刚刚起先时,对于要实现课设的任务须要用哪些指令和学问点都是一头雾水,还
21、有在编程中须要用到些以前没学过或者没接触过的指令时,比如说如何设置光标位段,如何设置显示方式,如何读取系统时间等等,要自己去翻阅相关的书籍,也利用网络搜寻到了许多相关的介绍和例题,进行探讨和学习。同时我也很感谢和那些我起的同学们,遇到难题,我们有时相互探讨,相互帮助,共同解决,这让我们在编程的过程中加快了学习和理解的效率。通过这次的编程,我对微机原理和汇编语言程序仃了更加深的相识和理解,也给了我个很好的机会,讲平常理论课上学到的学问和实践的编程联系起来,我想这对我今后的编程有了很大的帮助。其实是程序调试的过程。在我编写完程序后,我迫不及待的进行调试,却发觉并没有形成可执行文件,后来经过分析和检
22、查后发觉,我的第个方案的源程序应当在DOS下运行,于是我用了轻松汇编这个软件。再次进行安装和调试时,就可以正确显示出我的结果。这点让我领悟到,任何时候出现问题都不要惊慌,应当冷静的仔细的分析,总会找到可以解决的方法。最终是课设材料的整理和编写的过程。由于有了前几次的课程设计的经验,对于排版和字体等的具体要求可以做得比较好,我想这对今后的毕业设计的撰写仃很大的帮助。总之,这次的课程设计让我有三个方面的收获。第是对于课本学问的巩固和提高,对学过的只是次很好的回顾,因为我们平常这样的实践机会不是许多。其次,是我学会了更好地用汇编语言来编程,对于汇编语言的思想和许多的指令在这次课设中都有很大提高。第三
23、,是对各种编程的软件有很了很好的熟识和相识,对今后再次运用这些软件有很大的帮助。参考文献H1.沈美明、温冬婵编著.1BM-PC汇编讲言程序设计(其次版泗北京:清华高校出版社.2005年2沈美明、温冬婵编著.IBM-PC汇编语言程序设计(第版)3.北京:清华高校出版社.1997年I3J周佩玲、彭虎、傅忠谦编著.,微机原理与接口技术.北京:电子工业出版社.北京:清华高校出版社.2007年|4|陈玉生、王芳著QBM-PC汇编语言程序设计辅导及习题解答.北京:电子科技高校出版社.2006年|5|张雪兰、谭毓安、李元章著.4汇编语言程序设计一一从DOS到WINDOWS3.北京:清华高校出版社.2006年
24、|6|余朝琨著旬BM-PC机汇编语言程序设计.厦门:厦门高校出版社.2001年|7|马瑞芳著汇编语言程序设计典型题解析及自测试题乳西安:西北工业高校出版社.2002年|8|程学先、徐东平著公编讲言程序设计B.武汉:武汉理工高校出版社.2003年附录系统时钟显示源程序:STACXSE0EKDV200DUP(?)STACKENDSDATASEQENTSPACEDB100ODUPC.)DBUFFERDB8DUPC:),12DUPC)DBITFER1DB20DUP)STRDB,P1.EASEINPUTTIME(T)Q1.IT(Q),ODH1OAH1DATAENDSCODESEGMENTASSUMECS
25、OOOBDSiMTA.!SDATA.SSSTACXSTARTMOVAX,OOODII:设置显示方式为320200彩色文本方式B1.OS中断吩时IXTIOH;显示服务MOVAX.DATAMOVDS.AXMOVES.AX;数据段,附加段定义M()V,BP.OFFSETSPACEIJtADX.STR:显示提示信息MOVAH,9;显示提示信息字符串IW2111MOVAH,1;从脏盘输入单个字符I!VT21HCMPA1.54HjAt=r?JNEB;不等于则转到B程序段CA1.1.T1.MH;显示系统时间潮用TIME子程序B:CwA1.5IH1.AI.=Q?JNESTARTMOVAHZa1.;jS01do
26、s状态IW2111TIMEPROCNEAR:显示时间子程序disp1.ayi:MOVSI.OMOVBX1100;除以100取整*取余DIVB1.MOVAH,20i;取系统时间21HMOVA1.1CH;把小时数给a1.CA1.1.BCDASC;将时间数位转换成ASCII码字符INCSIMOVA1.,C1.;把分数给a1.CA1.1.BCDASCINCSIMOVA1.m;把段教给a1.CA1.1.BCDASCMOVBP1OFFSETDBUFFER;输出:,作为分隔符MOVDX.0C151.1.MOVCX18MOVBX.005EIIMOVAX11301HINTIO1.I:设置光标位置MOVAH.02
27、HMOVIHOAHMOVD1.,24H;dh显示行(X坐标);d1.显示列(y坐标)MOVBH.O;页码为OINTIOIIMOVBX.OO1811RE:MOVCX1OFFFFH:延时DECBXjbxi1.JNZR1.i:假如不等于零.转移到reMOVAKO1.H;读键盘缓冲区字符到AH寄存器IW16H;读磁盘变更状态JEDISP1.AYI;相等转移到disp1.ay1.程序JMPSTARTMOV.A1.1.4CHINT21H!dosRETIMEENDPBCDASCPROC:时何数的转换成ASCII码字符子程序PUSHBXCBW;扩展MOVB1.110DIV-B1.ADDA1.,O;屏蔽MOVDBUFFERSI,A1.INCSIADDAH,0MOVDBUFFERSI,AIIINCSIK)PBXRETBCDASCENDPCODEENDSENDSTART专科生课程设计成果评定表姓名ft别专业、*程设计f1.(目;课程设计答舞或质费记现成果讦定依据:量终讦定成果(以优、良、中、及格、不及格讦定)