资源描述:
《《微机研讨小鸟飞过》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微机原理研讨第二组:王格林孙玲瑶李浩宇王宏宇于亚鲲李鹏张记瑞马朝阳陈禹硕陆林刘安蒙李博智——汇编语言制作简易动画之小鸟飞过题目设想利用汇编语言实现简易动画的途径有许多种,我们组则选择了利用Bios的调用中的显示功能来做。小鸟图形的设计方法也有很多种,可以利用打点作图,也可以以字符画的形式。由于bios有些功能模式在win7系统下不兼容,还因时间的限制,本组选择了用字符画模拟小鸟的形状,利用bios的00号功能的字符显示方式。我们最终的结果是让字符小鸟在屏幕上飞出一个V字形。源代码选段DATASEGMENTINFO1DB0DH,0AH,'INPUT1OR2:
2、(1:bird,2:exit)$'BIRDDB2DH,10,3EH,10,4FH,10,2EH,10DB2DH,10,3DH,10,4FH,10,2EH,10;小鸟的字符图形表DB1000DUP(?)DATAENDSSTACKSEGMENTstackDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK源代码选段START:MOVAX,DATAMOVDS,AXMOVAH,0;设置显示方式为黑白字符显示方式MOVAL,0INT10HLEADX,INFO1;在显示器上显示字符串提示信息MOVA
3、H,9INT21HMOVAH,0;从键盘读取字符到AL寄存器INT16HCMPAL,31H;比较AL是否等于1JNEACALLXIAOA:CMPAL,32H;比较AL是否等于2JNESTARTMOVAH,4CH;终止当前程序并返回调用程序INT21H源代码选段xiaoproc;小鸟子程序PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVAH,0;设置显示方式为黑白字符显示方式MOVAL,0INT10HMOVAH,0FH;读当前显示状态INT10HMOVDH,0MOVDL,0源代码选段BEGIN:MOVSI,2MOVCX,1;光
4、标位置显示图形的次数LEADI,BIRD;DI指向小鸟字符表首字母DISP:CMPDL,20JAEdisp1MOVBP,DXMOVAH,2;设置光标位置INT10HMOVAH,9;显示小鸟字符图形MOVAL,[DI]MOVBL,[DI+1]INT10HMOVDX,BPCALLDLY;延时MOVAH,2;设置光标位置INT10HMOVAH,9;显示空字符图形MOVAL,'‘MOVDX,BPINCDLincdhADDDI,8DECSIJNZDISPJMPBEGIN源代码选段disp1:CMPDL,40JAEexit1MOVBP,DXMOVAH,2;设置光标位置
5、INT10HMOVAH,9;显示小鸟-字符图形MOVAL,[DI]MOVBL,[DI+1]INT10HMOVDX,BPCALLDLY;延时MOVAH,2;设置光标位置INT10HMOVAH,9;显示空字符图形MOVAL,''MOVDX,BPINCDLDECdhADDDI,8DECSIJNZDISP1JMPBEGINEXIT1:RETXIAOENDP源代码选段DLYPROCNEAR;延时子程序PUSHCXPUSHDXMOVDX,150DL1:MOVCX,6801DL2:LOOPDL2DECDXJNZDL1POPDXPOPCXRETDLYENDPCODEEND
6、SENDSTART让小鸟飞一会儿Bios功能调用在书上有提到过,但是由于不是很详细,所以在应用时我们也出现了许多问题。下面给大家讲一讲我们组在编程时出现的几个典型问题。问题一之匹诺曹鸟在bios中,cx寄存器控制的是显示次数,我们查表时没有注意到这一点,把cx寄存器用到了一个循环中去,于是出现了字符小鸟“->O.”中后面那个“.”随着行数的增加不断增加,看起来像小鸟的鼻子不断变长一样。我们研究了很久都没有发现程序中的错误,最终才发现是由于查表不仔细而引发的杯具。问题二之愤怒的小鸟在我们的调试过程中,我们的预想是让字符小鸟飞出一个V字形,于是我们设定由第0行
7、0列向下斜飞到第15行15列然后在向上斜飞。分别用两个循环控制。第一个循环中行是递加的列也是递加的,第二个循环中行是递减的但列还应是递加的,我们误将第二个循环中的列设成了递减,于是当鸟飞到第15行15列时,会从新回到14行14列位置,在这几个位置上下移动进入死循环。问题三之影分身鸟调试时,我们还遇到了这样一个问题,屏幕上每增加一行就出现一只小鸟,但原来那行的小鸟没有消失,于是循环结束后屏幕上就出现了N只鸟。这个错误的主要由于没有将原来那行的小鸟擦除掉而导致的。于是我们选择了暂存小鸟坐标,在上一个小鸟的位置输入空字符覆盖掉原来的字符。由此来起到擦除作用。心得
8、体会本次课程设计让我们学到了许多平时没有多注意的知识,也锻炼了实践