欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
换一换
首页 沃文网 > 资源分类 > DOCX文档下载
 

小鸟动画程序课程设计

  • 资源ID:20054       资源大小:137.01KB        全文页数:51页
  • 资源格式: DOCX        下载权限:游客/注册会员/VIP会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: QQ登录   微博登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

加入VIP,免费下载资源
 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

小鸟动画程序课程设计

题目小鸟动画程序初始条件在屏幕显示一小鸟,按S飞翔,按B鸣叫,按P暂停,按C继续,按Q退出程序。要求完成的主要任务(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排1月6日1月7日收集资料,方案选择1月8日1月13日整体流程,程序细节1月14日1月15日调试程序,报告撰写1月161月17日交设计报告,程序演示,答辩指导教师签名2014年1月6日系主任(或责任教师)签名年月目录摘要...............................................................................................................................................1小鸟动画程序............................................................................................................................I1设计任务及要求分析........................................................................................................12程序整体设计及方案选择..............................................................................................22.1整体设计思路阐述............................................................................................................22.2基本模块方案选择............................................................................................................32.2.1小鸟图案显示方案选择..........................................................................................32.2.2小鸟发声鸣叫方案选择..........................................................................................43程序各模块设计..................................................................................................................73.1主程序设计........................................................................................................................73.1.1主程序设计思路......................................................................................................73.1.2主程序流程图设计..................................................................................................73.1.3主程序代码设计......................................................................................................83.2小鸟飞翔子程序设计......................................................................................................103.2.1小鸟飞翔子程序设计思路....................................................................................103.2.2小鸟飞翔子程序流程图设计................................................................................103.2.3小鸟飞翔子程序代码设计....................................................................................113.3小鸟鸣叫子程序设计......................................................................................................123.3.1小鸟鸣叫子程序设计思路....................................................................................123.3.2小鸟鸣叫子程序流程图设计................................................................................133.3.3小鸟鸣叫子程序代码设计....................................................................................143.4小鸟飞翔并鸣叫子程序设计..........................................................................................153.4.1小鸟飞翔并鸣叫子程序设计思路........................................................................153.4.2小鸟飞翔并鸣叫子程序流程图设计....................................................................153.4.3小鸟飞翔并鸣叫子程序代码设计........................................................................163.5暂停子程序设计..............................................................................................................183.5.1暂停子程序设计思路............................................................................................183.5.2暂停子程序流程图设计........................................................................................183.5.3暂停子程序代码设计............................................................................................193.6小鸟显示子程序设计......................................................................................................213.6.1小鸟显示子程序设计思路....................................................................................213.6.2小鸟显示子程序流程图设计................................................................................213.6.3小鸟显示子程序代码设计....................................................................................224调试记录及结果分析......................................................................................................244.1调试记录及结果分析......................................................................................................244.2调试中出现的问题及解决方案......................................................................................265.小鸟动画程序的优化.....................................................................................................285.1小鸟动画优化..................................................................................................................285.2小鸟动画背景颜色优化..................................................................................................286心得与体会..........................................................................................................................297参考文献...............................................................................................................................30附录1小鸟动画程序......................................................................................................31武汉理工大学微机原理与接口技术课程设计说明书I摘要本文主要对小鸟动画进行程序设计,并通过masm软件进行运行。通过输入不同的字符对程序的控制,采用调用子程序的方法来实现,使用了堆栈技术和中断技术,来实现按下字符S,小鸟飞过,按B,小鸟鸣叫,按P暂停,按C继续,按下Q,则退出程序等功能。文中对程序设计的思路进行了详细的解析,并给出其流程图和程序代码,同时也对此程序设计的不同方案进行了比较选择。本程序可在windows2000,windowsxp上运行。所需要的工具软件为MASM2.0及以上版本,先生成.asm文件,再生成.的文件,然后运行。关键词小鸟动画,masm软件,中断,子程序调用武汉理工大学微机原理与接口技术课程设计说明书1小鸟动画程序1设计任务及要求分析设计任务要求在屏幕显示一小鸟,按S飞翔,按B鸣叫,按P暂停,按Q退出程序。而为了满足更人性化的要求,本文另增加功能键C,以在按P暂停时,还能回到原状态。基于以上考虑,现将设计要求总结如下①程序运行后,在无输入情况下,屏幕上显示小鸟图案;②程序运行后,按下S键,小鸟飞翔;按下B键,小鸟鸣叫;按下P键,程序暂停;按下Q键,程序结束;③在飞翔状态下,按B键,小鸟同时鸣叫;按P键,程序暂停;按下Q键,程序结束;④在鸣叫状态下,按S键,小鸟同时飞翔;按P键,程序暂停;按下Q键,程序结束;⑤在同时飞翔和鸣叫状态下,按B键,小鸟只鸣叫,回到功能4;按S键,小鸟只飞翔,回到功能3;按P键,程序暂停;按下Q键,程序结束;⑥在暂停状态下,按C键,程序回到暂停前状态继续运行;按下Q键,程序结束;⑦任何情况下,当输入无效键时,程序循环等待下一次输入。下面将以以上要求为指导,进行程序设计和仿真调试,完成小鸟动画程序武汉理工大学微机原理与接口技术课程设计说明书22程序整体设计及方案选择2.1整体设计思路阐述跟据第一节对设计任务的分析,此程序将通过子程序的调用来实现。在主程序中显示小鸟,且循环检测键盘输入,并执行相应子程序。当按键为Q时,调用结束子程序;当按键为P时,调用暂停子程序;当按键为S时,调用小鸟飞翔子程序;当按键为B时,调用小鸟鸣叫子程序;当无按键输入或按键为其它时,循环显示小鸟并检测键盘输入。在小鸟飞翔子程序中,当按键为Q时,调用结束子程序;当按键为P时,调用暂停子程序;当按键为B时,调用小鸟飞翔并鸣叫子程序;当无按键输入或按键为其它时,循环显示小鸟并检测键盘输入。在小鸟鸣叫子程序中,当按键为Q时,调用结束子程序;当按键为P时,调用暂停子程序;当按键为S时,调用小鸟飞翔并鸣叫子程序;当无按键输入或按键为其它时,循环显示小鸟并检测键盘输入。在小鸟飞翔并鸣叫子程序中,当按键为Q时,调用结束子程序;当按键为P时,调用暂停子程序;当按键为S时,调用小鸟飞翔子程序;当按键为B时,调用小鸟鸣叫子程序;当无按键输入或按键为其它时,循环显示小鸟并检测键盘输入。在暂停子程序中,当按键位Q时,调用结束子程序;当按键为C时,返回暂停前程序;当无按键输入或为其它时,循环子程序,保持暂停状态并持续检测键盘输入。可以发现,只要实现了上述程序设计即可满足设计要求。下面给出主程序的粗略流程图如图1所示,至于主程序及各子程序的具体实现将在第3节详细讨论。武汉理工大学微机原理与接口技术课程设计说明书3图1主程序流程图2.2基本模块方案选择此程序的基本模块是小鸟的图案显示和发声鸣叫,其飞翔及飞翔时鸣叫均是基于此模块。鉴于此,下面首先对小鸟的图案显示和发声鸣叫做出具体的方案比较及选择。2.2.1小鸟图案显示方案选择通过查阅资料,形成小鸟图像有两种方法一种是字符形成小鸟图像即文本方式;另一种是像素点形成小鸟图像(即图形方式)。方案一用字符形成小鸟图像,主要是利用BIOS中的INT10H中断,即显示器中断,INT10H中的09H号功能是在光标制定位置处写字符和属性。程序结构图大致如下MOVAH,09H;置光标YESNOYESYESYESYESNONONONO有按键输入显示提示语句显示小鸟输入字符为Q输入字符为B输入字符为P输入字符为S结束子程序飞翔子程序鸣叫子程序暂停子程序开始武汉理工大学微机原理与接口技术课程设计说明书4MOVAL,‘字符’;字符ASCII码MOVBL,7;字符属性MOVBH,0;第0页MOVCX,数量值;字符重复个数INT10H方案二用图形方式形成小鸟图像,是利用像素来产生彩色图案,它也是利用BIOS中的INT10H的功能00H来设置图形方式。程序结构大致如下面所示MOVAH,00H;请求设置方式MOVAL,0CH;彩色图形INT10H;调用中断服务在显示小鸟图像的两个方案中,方案一具有数据量少,操作简单的特点,但显示的图形与实际物体有偏差;方案二中显示的图像形象逼真,但它的数据量极其大,操作起来有点困难。鉴于以上的比较,在小鸟显示图像这个环节决定采用方案一,以减小操作量。在小鸟显示时,为了实现简单且达到较好的视觉效果,将小鸟图案设置为三幅图案组合而成的动态拍翅图案。这三幅图案分别表示小鸟收翅,展翅,拍翅三个画面,并循环显示以达到较好的视觉效果。至于其具体实现过程在第3.6节做详细叙述。2.2.2小鸟发声鸣叫方案选择小鸟发声程序也是一个比较重要的环节,中间涉及到扬声器发声部分。而在关于扬声器发声时,主要有两种方式,分别是以位触发和定时器控制。下面就这两种不同的方式确定两个不同的设计方案。方案一发声采用位触发方式。程序直接控制PPI(8255可编程序外围接口芯片)的输出控制寄存器(I/O端口为61H)的第一位,使该位按所需的频率进行1和0的交替变化,从而产生一串脉冲控制波形,这些脉冲经过放大后驱动扬声器发出声音。可以利用软件延时来控制所产生的脉冲波形的长度和脉宽,就可以实现产生不同频率和不同音长的声音。软件实现的程序如下INAL,61HMOVAH,ALANDAL,0FCH;关断定时器通道2的门控武汉理工大学微机原理与接口技术课程设计说明书5SOUNDXORAL,2;触发61H端口第1位OUT61H,ALMOVCX,DX;(DX)控制脉冲的计数值WAITLOOPWAIT;延时循环DECBX;(BX)脉冲持续的时间JNZSOUNDMOVAL,AHOUT61H,AL;恢复61H端口在本方案中,通过程序的方法来控制PB1,使其在1和0之间按一定的频率变,从而产生一串脉冲。控制脉冲宽度的计数值的算法如下计数值2801*100/音频1如果音频为f,则脉冲周期1/f一个半波的时间为1/2f秒,而1/2f秒的延时可简单地通过LOOP指令的循环来取得,由于2801次LOOP指令循环执行所需时间是10MS,所以一秒钟时间约执行2801*100次LOOP指令。控制脉冲宽度的计数值的实现程序如下MOVBX,100WAITMOVCX,2801DELAYLOOPDELAYDECBXJNZWAIT算出了脉冲宽度,再通过高低电平的不断变换,就可实现不同频率的脉冲方波。把此方波经滤波放大即可驱动扬声器发声了。方案二利用定时器发声。这里是通过硬件即8253定时器产生声音。CPU通过对定时器的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。当定时器接收的计数值为533H时,能产生896Hz的声音,因此产生其他频率的计数值就可由下式计算计数值533H896f1234DCHf在送出频率计数值之前,还要给方式寄存器送一个方式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。其位组合的格式如下武汉理工大学微机原理与接口技术课程设计说明书6当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。产生指定频率声音的程序段如下PUSHAX;保存ax的值MOVAL,0B6H;给2号定时器的43端口送入一个特定的数0B6HOUT43H,ALMOVAX,34DCHDIVBXOUT42H,AL;给42H端口装入一个16位的计时常数(533H*896/频率)MOVAL,AHOUT42H,ALINAL,61H;获取61h端口的当前值ORAL,03H;把61h端口低二位置1,即打开蜂鸣器OUT61H,AL;输出数据到61h端口POPAX;恢复ax的值对于小鸟发声区别在于以不同的方式来驱动扬声器发声。经对比可知,两种方案都各有优缺点。在方案1中,其优点是电路简单,所用的器件芯片少,主要芯片只有需一片8255,产生方波是通过软件来实现的,易于修改和维护。然而它也存在一定的缺点,就是系统不断地通过软件来产生方波,系统资源被占用,无法再做其它事。与方案1相比,方案2增加了一个8253芯片和一个与门,虽然电路比方案1复杂,但通过定时器产生方波,实现起来比较简单,而且也不会出现系统资源被全部占用的情况。所以经过分析,小鸟发声程序选择方案二进行设计。武汉理工大学微机原理与接口技术课程设计说明书73程序各模块设计3.1主程序设计3.1.1主程序设计思路在主程序中主要完成小鸟显示功能和键盘检测功能。小鸟显示功能可以通过调用小鸟显示子程序实现,小鸟显示子程序将在第3.6节详细介绍。每调用一次可以也只能显示一幅小鸟图案,这里因为要显示由三幅小鸟图案组合而成的动态图案,所以需调用三次小鸟显示子程序。每一次调用前还需将要显示的图案的变量地址传送给寄存器DI。要注意的是,在调用小鸟显示子程序之前还必须设置屏幕的显示方式。显示方式的设置可以通过调用BIOS的10H号中断的0号功能来实现,这里将显示方式设置为80*25黑白图形方式。键盘检测功能可以通过调用BIOS的16H号中断实现。BIOS的16H号中断用于键盘I/O中断调用,为了实现有无字符输入检测,这里使用其1号功能。当无字符输入时,标志位ZF置1;当有字符输入时,ZF清零。通过标志位的判断,即可执行不同的选择。当有按键按下时,输入字符的ASCII码就传送给了寄存器AL,通过将AL的内容与对应字符的ASCII码进行比较就执行不同的选择。每一次有字符输入后,无论是执行何种操作,在比较判断之后一定要将键盘缓存区清空,以保证下一次的键盘字符检测能顺利执行。键盘缓存区的清空可以通过调用BIOS的16H号中断的0号功能实现。为了便于人机交流,在主程序开始时还设计提示语句显示功能,这可以通过调用DOS的21H号中断功能实现。3.1.2主程序流程图设计通过以上主程序设计思路分析,可设计其详细流程图如图2所示。武汉理工大学微机原理与接口技术课程设计说明书8图2主程序流程图详3.1.3主程序代码设计MAINPROCmovah,0;设置显示方式为80*25黑白图形方式调用21H中断显示提示语句结束子程序飞翔子程序鸣叫子程序COUNT00开始调用10H中断功能0设置显示方式DI指向BIRD1并调用小鸟显示子程序0DI指向BIRD2并调用小鸟显示子程序0DI指向BIRD2并调用小鸟显示子程序0调用16H中断功能1读取键盘缓存区有按键输入输入字符为Q输入字符为B输入字符为P输入字符为SYESNOYESYESYESYESNONONONO调用16H中断功能0清空键盘缓存区暂停子程序武汉理工大学微机原理与接口技术课程设计说明书9moval,2int10hleadx,info1;在显示器上显示字符串提示信息movah,9int21hleadx,info2;在显示器上显示字符串提示信息movah,9int21hDISP0LEADI,BIRD1;显示小鸟CALLDISPLAY0LEADI,BIRD2CALLDISPLAY0LEADI,BIRD3CALLDISPLAY0movah,1;从键盘读取字符到AL寄存器int16hJZDISP0;若无输入则循环显示小鸟CMPAL,QJNZA0CALLFARPTRQUIT;若输入Q则结束,退出程序A0CMPAL,PJNZB0MOVCOUNT0,0CALLPAUSE;若输入P则暂停B0CMPAL,SJNZC0CALLFLY;若输入S则小鸟飞翔C0CMPAL,B武汉理工大学微机原理与接口技术课程设计说明书10JNZD0CALLFARPTRBLEAT;若输入B则小鸟鸣叫D0movah,0;清空键盘缓存区int16hJMPDISP0;若输入其它字符仍循环显示小鸟RETMAINENDP3.2小鸟飞翔子程序设计3.2.1小鸟飞翔子程序设计思路因本程序中小鸟显示图案是向前移动的动画图案,由于小鸟显示子程序中已包含清屏和延时操作,故只需在每一次动态图案后将光标位置前移一格,并循环显示即可让动态的小鸟图案向前移动。在小鸟飞翔子程序中同样需要检测键盘操作,其功能在第一节已作叙述,对应的实现方法也与主程序类似,这里不再详述。为了使小鸟在从飞翔子程序跳到鸣叫子程序或其他子程序中再回来时不改变位置,这里在内存中定义一个变量,设为DXF用于跟踪小鸟飞翔的位置。具体做法是在小鸟跳出飞翔子程序前,将DX的值传送给DXF,而在调回飞翔子程序后,则又将DXF的值传送给DX。通过以上步骤,就能实现对小鸟飞翔位置的跟踪。3.2.2小鸟飞翔子程序流程图设计通过以上飞翔子程序设计思路分析,可设计其详细流程图如图3所示。其中小鸟动画图案显示在主程序中已作论述,这里不再详述武汉理工大学微机原理与接口技术课程设计说明书11图3小鸟飞翔子程序流程图3.2.3小鸟飞翔子程序代码设计FLYPROCDISP1LEADI,BIRD1;显示小鸟CALLDISPLAY0LEADI,BIRD2CALLDISPLAY0LEADI,BIRD3CALLDISPLAY0PUSHAX;保护AX寄存器结束子程序清空键盘缓存COUNT10开始显示小鸟动画图案DLDL1光标前移一格有按键输入输入字符为Q输入字符为B输入字符为P调用16H中断功能0清空键盘缓存区DXFDX飞翔并鸣叫子程序暂停子程序YESNOYESYESYESNONONO武汉理工大学微机原理与接口技术课程设计说明书12MOVAX,DXFINCALMOVDXF,AX;小鸟向前移动1格POPAXmovah,1;从键盘读取字符到AL寄存器int16hJZDISP1;若无输入则循环显示小鸟CMPAL,QJNZA1CALLFARPTRQUIT;若输入Q则结束,退出程序A1CMPAL,PJNZB1MOVCOUNT1,0CALLPAUSE;若输入P则暂停B1CMPAL,BJNZC1movah,0;清空键盘缓存int16hCALLFARPTRFLY_BLEAT;若输入B则小鸟同时鸣叫C1movah,0;清空键盘缓存int16hJMPDISP1;若输入其它键则持续飞翔等待RETFLYENDP3.3小鸟鸣叫子程序设计3.3.1小鸟鸣叫子程序设计思路实现小鸟发声程序的原理利用8253定时器来驱动扬声器,PC机中有三种不同的定时器。0号定时器用来作为日常通用的时钟,它每秒约发出18次中断一修正时间;1号定武汉理工大学微机原理与接口技术课程设计说明书13时器用于DMA(直接存储器存取)传送数据,连接到扬声器上的是2号定时器,它实际上是一个振荡电路,此电路向扬声器发送指定频率的脉冲,当输出端口61H控制扬声器为接通状态时,就发出了一定频率的声音。3.3.2小鸟鸣叫子程序流程图设计通过以上小鸟鸣叫子程序设计思路分析,可设计其详细流程图如图4所示。其中通用发声子程序只在附录1中给出其程序代码,其具体含义可参考其他书籍,这里不加详述。图4小鸟鸣叫子程序流程图取发声频率和持续时间数据结束子程序清空键盘缓存COUNT20开始取频率和持续时间数据地址设置发声时间调用发声子程序有按键输入输入字符为Q输入字符为S输入字符为P调用16H中断功能0清空键盘缓存区DXDXB飞翔并鸣叫子程序YESNOYESYESYESNONONO暂停子程序显示小鸟动画图案武汉理工大学微机原理与接口技术课程设计说明书143.3.3小鸟鸣叫子程序代码设计BLEATPROCFARFREGLEASI,MUS_FREGLEABP,DSMUS_TIMEPUSHBXMOVDI,[SI]MOVDX,DS[BP]MOVBX,1400CALLGENSOUND;调用发声子程序POPBXLEADI,BIRD1;显示小鸟CALLDISPLAY0LEADI,BIRD2CALLDISPLAY0LEADI,BIRD3CALLDISPLAY0movah,1;从键盘读取字符到AL寄存器int16hJZFREG;若无输入则持续鸣叫等待CMPAL,QJNZA2CALLFARPTRQUIT;若输入Q则结束,退出程序A2CMPAL,PJNZB2MOVCOUNT2,0CALLPAUSE;若输入P则暂停B2CMPAL,SJNZC2武汉理工大学微机原理与接口技术课程设计说明书15movah,0;清空键盘缓存int16hCALLFLY_BLEAT;若输入S则同时飞翔C2movah,0;清空键盘缓存int16hJMPFREG;若输入其它则持续鸣叫等待RETBLEATENDP3.4小鸟飞翔并鸣叫子程序设计3.4.1小鸟飞翔并鸣叫子程序设计思路此模块的一个简单的设计思路就是在小鸟飞翔子程序中加入带发声功能的延时子程序,这样就能实现小鸟同时飞翔并鸣叫功能。但是如果只是这样,必将使小鸟飞翔的速度变慢,与之前只飞翔的状态衔接不协调。基于此,这里另外设计一个不带延时的小鸟显示子程序,并用它代替原先的小鸟显示子程序,这样处理后在满足小鸟同时飞翔并鸣叫的基础上,又使小鸟在按B前后的飞翔速度相协调,达到满意的效果。由于小鸟鸣叫子程序中已带有延时功能,故只要将其稍加变化即可得到所需的发声延时子程序。这里同样不对发声延时子程序加以详述,只在最后的附录中给出其程序代码。3.4.2小鸟飞翔并鸣叫子程序流程图设计通过以上小鸟飞翔并鸣叫子程序设计思路分析,可设计其详细流程图如图5所示。武汉理工大学微机原理与接口技术课程设计说明书16图5小鸟飞翔并鸣叫子程序流程图3.4.3小鸟飞翔并鸣叫子程序代码设计FLY_BLEATPROCDISP2LEADI,BIRD1;显示小鸟CALLDISPLAY1CALLBLEAT_DLYLEADI,BIRD2CALLDISPLAY0LEADI,BIRD3CALLDISPLAY0结束子程序COUNT30开始显示小鸟动画图案采用发声延时子程序DLDL1光标前移一格有按键输入输入字符为Q输入字符为B输入字符为P调用16H中断功能0清空键盘缓存区DXBDX鸣叫子程序输入字符为SDXFDX飞翔子程序YESNONONONONOYESYESYESYES暂停子程序武汉理工大学微机原理与接口技术课程设计说明书17PUSHAXMOVAX,DXFINCAL;小鸟向前移动1格MOVDXF,AXPOPAXmovah,1;从键盘读取字符到AL寄存器int16hJZDISP2;若无输入则持续飞翔等待CMPAL,QJNZA3CALLFARPTRQUIT;若输入Q则结束,退出程序A3CMPAL,PJNZB3MOVCOUNT3,0CALLPAUSE;若输入P则暂停B3CMPAL,BJNZC3CALLBLEAT;若输入B则小鸟只是鸣叫C3CMPAL,SJNZD3CALLFLY;若输入S则小鸟只是飞翔D3movah,0;清空键盘缓存int16hJMPDISP2;若输入其它则持续飞翔鸣叫等待RETFLY_BLEATENDP武汉理工大学微机原理与接口技术课程设计说明书183.5暂停子程序设计3.5.1暂停子程序设计思路在此模块中可以通过调用BIOS的16号中断来实现。若调用前键盘输入缓存区为空,调用后,系统将等待键盘输入以实行后续操作。故只要在调用BIOS的16号中断前将键盘缓存区清空就可实现暂停功能。由于在暂停后还要求能通过按键C使程序能继续往下运行,而每次暂停前的位置不可能完全相同,特别是在不同的子程序中调用暂停操作时,故还需对按下C键后实现分支选择。这里另外在数据段中定义4个变量,分别对应主程序,小鸟飞翔子程序,小鸟鸣叫子程序和小鸟飞翔并鸣叫子程序,并初始化为1。当在各个子程序中调用暂停子程序时,同时将对应的变量置0。到了暂停子程序并按下C键后,首先对各个变量进行检测,并执行变量为0的分支操作,并在返回前又将变量置1,这样就使程序能正确地回的暂停停位置。3.5.2暂停子程序流程图设计通过以上暂停子程序设计思路分析,可设计其详细流程图如图6所示。武汉理工大学微机原理与接口技术课程设计说明书19图6暂停子程序流程图3.5.3暂停子程序代码设计PAUSEPROCmovah,0;清空键盘缓存int16hCMPAL,QJNZE0CALLFARPTRQUIT;若输入Q则结束,退出程序E0CMPAL,CJZF0;若输入C则继续显示小鸟开始清空键盘缓存区输入字符为Q输入字符为PCOUNT00COUNT10COUNT20COUNT21COUNT30COUNT31结束子程序YESNOYESYESYESYESNOYESNONONONOCOUNT01COUNT11返回主程序返回飞翔子程序返回鸣叫子程序返回飞翔鸣叫子程序武汉理工大学微机原理与接口技术课程设计说明书20JMPPAUSE;若输入其它字符则保持暂停状态F0CMPCOUNT0,0JZG0;若count0为0,则返回主程序CMPCOUNT1,0JZG1;若count1为0,则返回飞翔子程序CMPCOUNT2,0JZG2;若count2为0,则返回鸣叫子程序CMPCOUNT3,0JZG3;若count3为0,则返回飞翔并鸣叫子程序G0MOVCOUNT0,1JMPFARPTRDISP0G1MOVCOUNT1,1JMPFARPTRDISP1G2MOVCOUNT2,1JMPFARPTRFREGG3MOVCOUNT3,1JMPFARPTRDISP2RETPAUSEENDP武汉理工大学微机原理与接口技术课程设计说明书213.6小鸟显示子程序设计3.6.1小鸟显示子程序设计思路小鸟显示的原理在2.2.1小节已作了详细介绍,这里仅给出本程序中小鸟的显示步骤。首先对屏幕进行清屏,之后将DI指向所要显示的图案,并将光标位置指向小鸟图案的参考位置,然后调用BIOS的10H中断的9号功能显示小鸟图案第一个字符。再将DI加4指向下一个字符,重复上述步骤,直至所有字符显示完毕结束。最后再调用一个延时程序即可显示并看到所有显示的小鸟图案。3.6.2小鸟显示子程序流程图设计通过以上暂停子程序设计思路分析,可设计其详细流程图如图7所示。图7小鸟显示子程序流程图去掉延时子程序即可得到不带延时的小鸟显示图案子程序DISPLAY1。调用clear1清屏开始将字符个数送CX调用BIOS10H中断设置光标位置调用BIOS10H中断显示一个字符DIDI4CX0CXCX-1DXDXF结束NO调用延时子程序YES武汉理工大学微机原理与接口技术课程设计说明书223.6.3小鸟显示子程序代码设计FLY_BLEATPROCDISP2LEADI,BIRD1;显示小鸟CALLDISPLAY1CALLBLEAT_DLYLEADI,BIRD2CALLDISPLAY0LEADI,BIRD3CALLDISPLAY0PUSHAXMOVAX,DXFINCAL;小鸟向前移动1格MOVDXF,AXPOPAXmovah,1

注意事项

本文(小鸟动画程序课程设计)为本站会员(星星008)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2017-2019 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922