微机课程方案(秒表)_第1页
微机课程方案(秒表)_第2页
微机课程方案(秒表)_第3页
微机课程方案(秒表)_第4页
微机课程方案(秒表)_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

个人资料整理 仅限学习使用目录一、设计任务-------------------------------------------------------------3二、设计原理-------------------------------------------------------------32.1原理概述2.2延时原理2.3显示字符及字符串原理2.4压缩BCD码转为ASCII原理三、四、五、六、七、八、

2.5动态扫描键盘原理设计流程图----------------------------------------------------------43.1主程序流程图3.2各子程序流程图源程序运行结果----------------------------------------------------7程序调试--------------------------------------------------------------8心得体会--------------------------------------------------------------9参考书目--------------------------------------------------------------9附录<源程序代码)-----------------------------------------------10个人资料整理 仅限学习使用一、设计任务九、 具有秒和百分之一秒计时并显示于图案中央十、 具有启、停功能十一、具有复位功能4.具有记忆功能5.具有整分报时功能二、设计原理2.1原理概述通过调用INT21H的8号功能实现控制字符的输入,通过调用延时程序实现百分之一秒的定时,通过调用INT10H的2号功能实现光标定位,调用INT21H的2号功能实现字符的输出,通过调用INT21H的9号功能实现字符串的输出。2.2延时原理本设计利用软件实现延时,即通过可控制的循环来占用CPU的时间来实现延时。延时函数名为TIME,运用内外两层循环,外循环由AX中的数值来控制,内循环有CX中的值来控制。实现不同延时的控制,通过反复比较调试,确定AX的值为0EFH,CX的值为0FFFFH。2.3显示字符及字符串原理整个屏幕可显示25行、80列字符,屏幕左上角字符位置为0行0列,右下角字符位置为24行79列,对应于十六进制为:左上角为<0,0),右下角为<18,4F)。定位光标用INT10H的2号功能,DH中存行号,DL中存列号,BH中存页号。显示字符用INT21H的2号功能,DL中存放要显示字符的ASCII码。显示字符串用INT21H的9号功能,DX中存要显示的字符串的偏移地址。2.4压缩BCD转为ASCII原理先将压缩BCD码的高4位取出,右移四位后,与30H相或,存到相应内存单元;然后将低4位取出,与30H相或,存到下一内存单元。2.5动态扫描键盘原理运用INT21H的8号功能来实现动态扫描键盘。如果有键按下,则相应的键值的ASCII码被存到AL中。判断AL中的数值,若不是控制字符,则继续循环,从而实现动态扫描键盘。个人资料整理 仅限学习使用一、程序流程图3.1主程序流程图个人资料整理 仅限学习使用3.2子程序流程图个人资料整理 仅限学习使用个人资料整理 仅限学习使用个人资料整理 仅限学习使用四、源程序运行结果图4.1程序执行效果图五、程序调试个人资料整理 仅限学习使用1、主程序的调试本方案的设计思路是先写好各子程序再写主程序,因此必须明确何时调用子程序,否则会出现逻辑错误。何种寄存器需要保护,取决于子程序在主程序中的位置以及该寄存器在主程序中的作用,要尽量少用堆栈操作以提高效率。主程序调试的另一重要内容是如何实现控制字符的各种功能。我们组使用DOS系统功能调用的8号功能,该功能将键盘输入存入AL寄存器,通过判断寄存器中是否为控制字符来判断是否有字符输入,若AL中为随机数则无输入。主程序的控制字符为大写字符,一开始我们没有用大写字母锁定,按什么键都不能启动,以为程序有问题,几经修改,浪费了很多时间。主程序使用压缩BCD码做的加法,再用DAA进行调整,这时要注意DAA只能对AL中的结果进行调整,因此只能用AL做加法,再将数据传送过去。2、延时子程序的调试延时程序的时间并没有经过精确计算,因此只能用试探法逐渐增加或减小AX值。我们组是每十秒与标准时间<手机秒表)比较一次,程序走的比较快因此应逐渐增加AX值,最终选定AX=0EFH。当然了人总有一定的反应时间,不可能做到十分精准,但是在误差允许范围之内就可以了。3、图形显示程序的调试我们组的图形显示使用了宏调用,主要因为它可以方便的传递参数,图形显示需要大量重复性程序使用宏定义可以节约编程时间,又可以让程序更简洁。调试的主要任务是使图形更美观,通过数出各点的行数列数就可以方便地确定某点的位置和字符。需要改动时只需修改宏调用的参数。4、清屏子程序调试通过阅读《微型计算机原理与接口技术》我了解到,可以使用 BIOS中断调用中10H号中断的6号功能实现向上滚屏,同时可以设置颜色。由于书中没有具体指明颜色代号,只能通过从01H开始依次尝试。经过多次调试最终确定图形使用0CH红色,字幕使用0BH绿色,记忆区使用0DH紫色。5、记忆功能子程序调试记忆功能的基本原理很简单就是每次复位时都调用一次记忆子程序,将当前值记录下来,共可记录10组数据,这样方便了多次计时。该程序的调试主要是通过对屏幕的设计,使的每满十次记忆后可以顺利将原数清空。基本原理与清屏功能相同,就是将记忆区的起始行列号和终止行列号准确的送到INT10H的入口参数。6、响铃功能的调试响铃功能结构简单但有一个关键点,就是不能将响铃的 ASCII码直接送到DL,只能通过AL转送。六、心得体会个人资料整理 仅限学习使用1.掌握几种实用工具的重要性汇编语言的编译、链接工具都很简单,适用于小程序的编辑和调试,遇到复杂的程序就应使用更高级的工具,网上有很多语言工具免费使用,画流程图时,我却还用Windows画图工具,效率低且不准确,以后要多学习,掌握更多的方法才能提高效率。2、要熟悉课本并不断深入探索课本的附录有很多功能,大家往往只关注考试要求的内容,对其他的实用信息不能深入挖掘。本程序的清屏功能就是从“BIOS中断调用表”中找到的,经过多次尝试才确定了我们需要的功能。以后学习时遇到问题,也可以用软件实现来验证自己的猜测。《微机原理》是一门实用性很强的学科,要加强理论与实践的联系才能学的更透,理解的更深。3、做事要认真细心、一丝不苟将源程序敲入电脑,常会有错字漏字,要反复比较才能保证不出错。刚开始我们的宏定义在结尾时加了宏名称,由于过程定义结束时都是要加过程名,我就理所当然的认为宏定义也要加名称,在数据传送时直接传送容易出现类型不匹配问题,通过AL传可以避免。字符串结束时一定要加‘$’,否则会出现乱码。这些都是调试中发现的问题,只有注意细节,才能顺利完成任务。总结:通过本次课程设计,我加深了对课本知识的理解,同时熟练掌握了汇编语言的编辑、调试工具。在以后的学习生活中还要继续保持严谨认真的科学态度,保持不断尝试和探索的耐心,保持勇于解决问题的决心。不断地向老师、同学们学习、交流,分享吸取他们的经验,更好的提高自己。七、参考书目[1]张永祥《微型计算机原理》中国电力出版社2005年8月[2]武新《汇编语言程序设计》武汉理工大学出版社2006年7月[3]马力《8086汇编语言程序设计》机械工业出版社2006年9月[4]杨季文《汇编语言程序设计教程》清华大学出版社2008年3月八、附录<源程序)DISMACROLOCA T,CODE 。设置图形显示宏定义PUSHDXPUSHBXPUSHAXMOVDX,LOCAT ;设置光标位置MOVBH,00MOVAH,02H个人资料整理 仅限学习使用INT10HMOVDL,CODEMOVAH,02HINT21HPOPAXPOPBXPOPDXENDM

;输出字符串DATSEGMENT ;设置数据段BUFDB'INPUTSTARTRESETENDCONTINUE$'BUFFERDB10DUP(?> ;定义缓存区TIPDB'MEMORY$' ;定义记忆提示NUMDB1LODEQU0929HDATENDSCODSEGMENT ;定义代码段

;设置功能说明MOVDS,AXMOVDX,OFFSETBUF ;输出功能说明MOVAH,09HINT21HCALLDISMER ;记忆区提示符置光标MOVDX,OFFSETTIP ;输出记忆提示字符MOVAH,09HINT21HCALLCLR ;图形区清屏并设置颜色CALLCLRDAT ;秒表数字区清屏并设置颜色CALLCLRMER 。记忆区清屏并设置颜色DIS0419H,'<' ;通过宏调用显示图形DIS0517H,'<'DIS0715H,'<'DIS0914H,'<'DIS0B14H,'<'DIS060EH,'_'DIS0710H,'_'DIS0812H,'_'DIS0913H,'_'DIS0A14H,'_'DIS0915H,'_'DIS0816H,'_'DIS0718H,'_'DIS061AH,'_'DIS071CH,'*'DIS081EH,'*'DIS091FH,'*'DIS0B20H,'*'DIS0D21H,'*'DIS0F21H,'*'DIS1120H,'*'DIS131FH,'*'DIS141EH,'*'DIS151DH,'*'DIS161BH,'*'个人资料整理 仅限学习使用DIS1719H,'*'DIS1717H,'_'DIS1616H,'_'DIS1514H,'_'DIS1612H,'_'DIS1711H,'_'DIS170EH,'*'DIS160CH,'*'DIS150BH,'*'DIS140AH,'*'DIS1309H,'*'DIS1108H,'*'DIS0F07H,'*'DIS0D07H,'*'DIS0B08H,'*'DIS0909H,'*'DIS080AH,'*'DIS070CH,'*'DIS0C12H,'_'DIS0C13H,'_'DIS0C14H,'_'DIS0C15H,'_'DIS0C16H,'_'CALLGO ;设置初植LOAD:CALLIOSET ;光标定位CALLHALT ;等待输入MOVDX,0MOVCH,0AGAIN:CALLTIME ;调用延时程序MOVAL,DL ;百分之一秒加一ADDAL,1DAAJCNEXT1 ;满一百进位MOV DL,ALJMPDISPY ;不满一百显示NEXT1:MOVDL,0MOVAL,DH ;秒位加一ADDAL,1DAAMOVDH,ALCMPAL,60HJNEDISPYCALLBELL ;满60提示铃声并进位MOVDH,0MOVAL,CH ;分位加一ADDAL,1DAAMOVCH,ALCMPAL,60HJNEDISPY ;满60清零MOVCH,0DISPY: ;显示电子秒表MOVBX,OFFSETBUFFER ;取缓冲区地址MOVAL,CH;将分位转变为 码并送缓冲区个人资料整理 仅限学习使用INCBXINCBXMOVAL,DH;将秒位转变为ASCII码并送缓冲区CALLTRANINCBXINCBXMOVAL,DL;将百分之一秒位转变为ASCII码并送缓冲区CALLTRANPUSHBXPUSHCXPUSHDXCALLIOSET;光标置位MOVDX,OFFSETBUFFER;输出缓冲区字符串MOVAH,09HINT21HPOPDXPOPCXPOPBXMOVAH,0BH;等待键盘输入INT21HANDAL,ALJZAGAINMOVAH,08HINT21HCMPAL,'R';判断输入是否为RJNENEXT2;不是则判断是否为ECALLMEMORY;若是则调用记忆功能保存当前值MOVCH,0;初值清零重新计数MOVDL,0MOVDH,0JMPAGAINNEXT2:CMPAL,'E';判断是否为EJNEAGAIN;不是则继续计数NEXT3:;若是则暂停计数MOVAH,08HINT21HCMPAL,'C';判断是否输入CJEAGAIN;若是则继续计数CMPAL,'R';判断是否输入RJNENEXT3;若不是则继续等待输入CALLMEMORY;若是则调用记忆功能CALLGO;重新设置初值等待重新启动CALLIOSETMOVDX,OFFSETBUFFERMOVAH,09HINT21HJMPLOADRETSTARTENDPGOPROC;设置初值子程序MOVBX,OFFSETBUFFERMOVAL,'0'MOV[BX],ALINCBX个人资料整理 仅限学习使用MOVAL,'0'MOV[BX],ALINCBXMOVAL,':'MOV[BX],ALINCBXMOVAL,'0'MOV[BX],ALINCBXMOVAL,'0'MOV[BX],ALINCBXMOVAL,':'MOV[BX],ALINCBXMOVAL,'0'MOV[BX],ALINCBXMOVAL,'0'MOV[BX],ALINCBXMOVAL,'$'MOV[BX],ALRETGOENDPIOSETPROCMOVDX,0F10HMOVBH,00MOVAH,02HINT10HRETIOSET ENDPHALTPROCMOVAH,08HINT21HCMPAL,'S'JNEHALTRETHALTENDPTRANPROC

;十六进制转

ASCII

码子程序MOVCL,ALSHRAL,1SHRAL,1SHRAL,1SHRAL,1ORAL,30HMOV[BX],ALINCBXMOVAL,CLANDAL,0FHORAL,30HMOV[BX],ALRETTRANENDPTIMEPROC

;延时子程序PUSHCXPUSHAX个人资料整理 仅限学习使用MOVAX,0EFHMOVCX,0FFFFHA1:DECAXJNZA2JMPA3A2:DECCXJNZA2JMPA1A3:POPAXPOPCXRETTIMEENDPMEMORY PROC

;记忆功能子程序PUSHDXPUSHBXPUSHAXCMPNUM,10JEX2ADDNUM

温馨提示

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

评论

0/150

提交评论