微机原理与接口技术课程设计动画程序设计_第1页
微机原理与接口技术课程设计动画程序设计_第2页
微机原理与接口技术课程设计动画程序设计_第3页
微机原理与接口技术课程设计动画程序设计_第4页
微机原理与接口技术课程设计动画程序设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、 微机原理与接口技术 课程设计设计课题: 动画程序设计 班 级: 学 号:姓 名: 指导教师:2013 年 1月15日一、设计题目动画程序设计二、设计内容1、主要内容:利用BIOS系统功能调用,进行简单的动画设计。利用BIOS中断的10号、21号功能,进行简单的动画设计,并根据以下提示信息进行选择:(1)小鸟从屏幕飞过。(2)汽车按水平方向从屏幕上开过去。(3)退出。2、基本功能:(1)清屏宏定义观察程序流程图,在显示小鸟图形,汽车图形时,要先清屏,所以在编写程序使用到宏,因为宏定义只需在汇编语言原程序中定义一次,便可以多次反复调用。调用时只需要一条宏指令即可。程序中的清屏定义为:CLEAR

2、MACRO pch,pcl,pdh,pdl,pbh MOV AH,0MOV AL,02H INT 10HMOV AL,0 MOV CH,pch MOV CL,pcl MOV DH,pdh MOV DL,pdl MOV BH,pbh INT 10HENDM宏指令名为CLEAR,定义了五个形式参数,分别为:pch,pcl,pdh,pdl,pbh,把pch,pcl的值分别传给窗口左上角行号、列号,pdh,pdl的值分别传给窗口右下角行号、列号,pbh的值则传给窗口底部卷入行属性。利用已经定义好的宏,清屏时可以宏调用。宏调用语句为:CLEAR 0,0,24,79,7(2)子程序设计 在接受键盘输入后,

3、判断AL的值,如果是“1”就调用小鸟子程序,如果是“2”就调用汽车子程序,如果是“3”就结束退出。在小鸟子程序中又嵌套了延时子程序,在汽车子程序中又嵌套了多个子程序。(3)显示小鸟字符图形 程序中利用BIOS系统功能中10H中断的09号功能进行小鸟字符图形的显示,程序段如下:MOV AH,9 MOV AL,76H MOV BL,10 INT 10H要是小鸟字符图形显示的更清晰,则需要延时。循环指令LOOP,当CX不为零时,执行循环转移分支;当CX为零时,退出循环。延时子程序为:DLY PROC NEAR PUSH CX PUSH DX MOV DX,10000 DL1: MOV CX,6801

4、 DL2: LOOP DL2 DEC DX JNZ DL1 POP DX POP CX RET DLY ENDP 上述子程序用两层循环实现延时,内循环实现单位时间延时,外循环次数由寄存器DX决定。(4)显示汽车字符图形 因为汽车是多字符显示,所以在子程序中还嵌套了显示汽车图形和清屏两个子程序。MOV CH,0 MOV CL,DI INC DI MOV CHAR,CX MOV POINTER,DI MOV LINE,DH MOV COL,DL 此段程序把CH的值设为了0,又因为CL中存放字符的个数,所以CL=6,DI指向字符图形表中的第一个字符。三、设计原理及方案 1、设计原理图:图3-1 主程

5、序图3-2 小鸟子程序 图3-3 汽车子程序 2、设计方案:在屏幕上显示动画的效果可以按以下五步进行:(1)在屏幕上显示图形ASCII码表,选择“V”来显示小鸟,“V”的ASCII码为76H,查表选择彩色文本模式下的IRGB组合成的通用颜色,选择亮绿色,色号为10。显示汽车时用多字符图形显示,用6个字符组合来显示汽车,ASCII码分别为52H、0B1H、0DBH、0DBH、4FH、4FH,显示属性为白色,即色号为7。在设置字符显示位置时,是通过两两字符间的相对坐标来实现的。(2)延时一个时间周期,这样图形更清晰。这里要用到延时子程序及其调用。(3)消除图形在进行小鸟清屏时,可使用清屏宏调用,只

6、需在程序前面进行清屏宏定义。而在进行汽车的清屏时,由于汽车是由对字符图形显示的,所以不采用清屏宏调用,而是通过修改字符显示属性来进行清屏。(4)改变图形的行、列坐标。因为要求小鸟从屏幕飞过,所以小鸟的飞行路径不是水平也不是垂直的,所以要同时改变字符的行、列坐标;而汽车从左至右行驶,所以只需要改变汽车的列坐标。(5)返回第一步,重复上述过程。利用BIOS系统功能中 10H中断的06号功能进行清屏,循环调用09号功能显示字符图形;延迟一段时间后,再循环调用09号功能,设置BL寄存器的值为0(黑底黑字显符图形),以达到擦除图形的效果;改变行、列坐标,调用02号功能设置光标位置,重复上述过程。利用DO

7、S中断的01号和02号子功能来完成键盘接收,结果显示。四、汇编源程序代码DATA SEGMENT INFO1 DB 0DH,0AH,'INPUT 1,2,OR 3:(1:bird,2:car,3:exit) $' BUFA DB 200 DB ? DB 200 DUP(0) BUFB DB 200 DUP(?) CAR DB 7 ;小汽车的字符图形表 DB 52H,7,0,0 DB 0B1H,7,0,1DB 0DBH,7,0,1 DB 0DBH,7,0,1 DB 4FH,7,1,0 DB 4FH,7,0,-3 CHAR DW ? POINTER DW ? LINE DB ? C

8、OL DB ? DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AH,0 ;设置显示方式为80*25的黑白文体MOV AL,02H INT 10H LEA DX,INFO1 ;在显示器上显示字符串提示信息MOV AH,9 INT 21H MOV AH,1 ;从键盘读取字符到AL寄存器 INT 21H CMP AL,31H ;比较AL是否等于1 JNE A CALL XIAO A:

9、CMP AL,32H ;比较AL是否等于2 JNE B CALL QICHE B: CMP AL,33H ;比较AL是否等于3 JNE START MOV AH,4CH ;终止当前程序并返回调用程序 INT 21H CLEAR MACRO pch,pcl,pdh,pdl,pbh ;清屏宏定义MOV AH, 0 MOV AL,02H INT 10H MOV AH,6 ;调用6号功能 MOV AL,0 ;设置整个屏幕为空白MOV CH,pch MOV CL,pcl;窗口左上角行列数MOV DH,pdhMOV DL,pdl ;窗口左上角行列数 MOV BH,pbh ;正常属性显示 INT 10HEN

10、DMBIRD PROC ;小鸟子程序MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,02H INT 10H CLEAR 0,0,24,79,7 ;清屏宏调用MOV AH,0FH ;读当前显示状态INT 10H MOV DH,10 MOV DL,0 BEGIN:MOV SI,2 MOV CX,1 DISP: CMP DL,80 JAE EXIT1 MOV AH,2 INT 10H MOV AH,9 MOV AL,76H MOV BL,10 INT 10H CALL DLY ;延时MOV AH,9 MOV AL,' ' INT 10H INC DL DE

11、C SI JNZ DISP JMP BEGIN EXIT1:RET BIRDENDP QING PROC NEAR MOV AH,6 MOV AL,0 MOV CX,0 MOV DH,24 MOV DL,79 MOV BH,7 INT 10H RET QING ENDP DLY PROC NEAR ;延时子程序 PUSH CX PUSH DX MOV DX,10000 DL1: MOV CX,6801 DL2: LOOP DL2 DEC DX JNZ DL1 POP DX POP CX RET DLY ENDP QICHE PROC NEAR ;汽车子程序 MOV AH,0 MOV AL,02

12、 INT 10H CLEAR 0,0,24,79,7 ;清屏宏调用 LEA DI,CAR ;DI指向字符图形表 MOV DH,5 ;从第5行0列位置开始显示汽车 MOV DL,0 CALL MOVE RET QICHE ENDP MOVE PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AH,0FH ;取当前显示方式INT 10H MOV CH,0 MOV CL,DI ;CL放字符个数INC DI ;DI指向字符图形表 MOV CHAR,CX MOV POINTER,DI MOV LINE,DH MOV COL,DL PLOT_NEX

13、T: ADD DH,DI+2 ;改变行列坐标ADD DL,DI+3 CMP DL,80 ;是否出屏JB MOV_CRSR POP DI POP DX POP CX POP BX POP AX RET MOV_CRSR: MOV AH,2 INT 10H MOV AL,DI ;取字符值MOV BL,DI+1 ;取字符属性MOV AH,09 ;显示字符 INT 10H ADD DI,4 ;DI指向下一个字符LOOP PLOT_NEXT CALL DLY CALL ERASE JMP SHORT PLOT_NEXT MOVE ENDP ERASE PROC NEAR MOV CX,CHAR MOV

14、DI,POINTER MOV DH,LINE MOV DL,COLERASE_NEXT: ADD DH,DI+2 ;修改光标的行坐标ADD DL,DI+3 ;修改光标的列坐标MOV AH,2 INT 10H ;设置光标位置MOV AL,DI MOV BL,0 ;设置字符属性为0,为黑色PUSH CX MOV CX,1 ;设置字符显示次数为1MOV AH,9 INT 10H POP CX ADD DI,4 ;指向下一个要用来擦除的字符LOOP ERASE_NEXT MOV CX,CHAR MOV DI,POINTER MOV DH,LINE INC COL MOV DL,COLRET ERASE

15、 ENDP CODE ENDS END START五、实施结果1、初始界面,如图5-2所示:图5-12、输入1,小鸟从屏幕飞过界面,如图5-2所示:图5-23、输入2,汽车按水平方向从屏幕上开过去界面,如图5-3所示:图5-34、输入3,退出界面,如图5-4所示:图5-4六、课程设计体会看到本次微机原理与接口技术课程设计的课题后,我首先从12个课题中选择了一个我比较感兴趣的课题动画程序设计。确定这个课题之后,我便仔细研究了老师在指导书中给出的设计思路,然后查阅相关书籍,上网查找各种资料,初步确定了设计方案,对整个程序的流程有了大概的顺序,对程序先实现什么再实现什么有了一个初步计划。因为小车使用

16、多字符图形组合来显示,所以首先定义出小车的字符图形表。然后就是在运行程序是要用键盘输入指令1、2、3,以显示不同的运行结果,此时就要对从键盘输入信息和在显示器上显示信息进行定义。因为在显示小鸟图形和汽车图形时,要先清屏,所以在编写程序要进行清屏宏定义以供调用。接下来就编写小鸟子程序,为使小鸟字符图形显示的更清晰,则需要编写延时子程序。最后一大块,便是编写汽车子程序。得出完整程序后,便在计算机上运行,初次运行时程序中出现了六处错误。有两处比较明显的相同错误,单引号不慎写成了双引号,改正后运行便还剩四处错误。根据计算机提示的错误行数,很容易找到了第三处错误,英文字母EXIT在输入时写成了EXT。第四处错误是MOV POINTER,DI中,POINTER和DI之间的“,”写成了“.”。最后一处错误也是最严重的一处错误,把段寄存器CS当成了目的操作数,修改方式是:用其他通用寄存器代替。通过本次微机原理与接口技术课程设计,培养了我各方面的能力。我更好的学会了把课堂上的理论知识运用到实践中,通过解决实际问题,不断地找出自己所学

温馨提示

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

评论

0/150

提交评论