收藏 分享(赏)

北交微机原理课设-动画程序设计(小鸟和小车).doc

上传人:cjc2202537 文档编号:192257 上传时间:2018-03-23 格式:DOC 页数:14 大小:345.50KB
下载 相关 举报
北交微机原理课设-动画程序设计(小鸟和小车).doc_第1页
第1页 / 共14页
北交微机原理课设-动画程序设计(小鸟和小车).doc_第2页
第2页 / 共14页
北交微机原理课设-动画程序设计(小鸟和小车).doc_第3页
第3页 / 共14页
北交微机原理课设-动画程序设计(小鸟和小车).doc_第4页
第4页 / 共14页
北交微机原理课设-动画程序设计(小鸟和小车).doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

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

2、dh,pdl,pbh MOV AH,0MOV AL,02HINT 10HMOV AL,0 MOV CH,pch MOV CL,pcl MOV DH,pdhMOV 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)子程序设计在接受键盘输入后,判断 AL 的值,如果是“1

3、”就调用小鸟子程序,如果是“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 D

4、L2: 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、设计原理图:图

5、3-1 主程序图 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(黑底黑字显示字符图形) ,以达到擦除图形的效

7、果;改变行、列坐标,调用 02 号功能设置光标位置,重复上述过程。利用 DOS 中断的 01 号和 02 号子功能来完成键盘接收,结果显示。四、汇编源程序代码DATA SEGMENT INFO1 DB 0DH,0AH,-PLEASE 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,0DB 4FH

8、,7,0,-3DB 2,7,-2,1CHAR DW ? POINTER DW ? LINE DB ? COL 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 ;从键盘读取字符到

9、AL 寄存器 INT 21H CMP AL,31H ;比较 AL 是否等于 1 JNE A CALL BIRD A: 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, 0MOV AL,02HINT 10HMOV AH,6 ;调用 6 号功能MOV AL,0 ;设置整个屏幕为空白MOV CH,pch MOV CL,pcl ;窗口左

10、上角行列数 MOV DH,pdhMOV DL,pdl ;窗口左上角行列数 MOV BH,pbh ;正常属性显示 INT 10HENDMBIRD 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,1

11、0 INT 10H CALL DLY ;延时 MOV AH,9 MOV AL,DI INT 10H INC DL DEC SI JNZ DISP JMP BEGIN EXIT1:RET BIRD ENDP 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 P

12、OP CX RET DLY ENDP QICHE PROC NEAR ;汽车子程序 MOV AH,0 MOV AL,02 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

13、指向字符图形表MOV CHAR,CX MOV POINTER,DI MOV LINE,DH MOV COL,DL PLOT_NEXT: 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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报