1、 微机原理与接口技术微机原理与接口技术 课程设计课程设计 设计课题: 动画程序设计 班 级: 学 号: 姓 名: 指导教师: 2013 年 1 月 15 日 一、设计题目 动画程序设计 二、设计内容 1、主要内容:利用 BIOS 系统功能调用,进行简单的动画设计。利用 BIOS 中断的 10 号、21 号功能,进行简单的动画设计,并根据以下提示信息进行选择: (1)小鸟从屏幕飞过。 (2)汽车按水平方向从屏幕上开过去。 (3)退出。 2、基本功能: (1)清屏宏定义 观察程序流程图, 在显示小鸟图形, 汽车图形时, 要先清屏, 所以在编写程序使用到宏, 因为宏定义只需在汇编语言原程序中定义一次
2、, 便可以多次反复调用。 调用时只需要一条宏 指令即可。 程序中的清屏定义为: CLEAR MACRO pch,pcl,pdh,pdl,pbh MOV AH,0 MOV AL,02H INT 10H MOV AL,0 MOV CH,pch MOV CL,pcl MOV DH,pdh MOV DL,pdl MOV BH,pbh INT 10H ENDM 宏指令名为 CLEAR, 定义了五个形式参数, 分别为: pch,pcl,pdh,pdl,pbh, 把 pch, pcl 的值分别传给窗口左上角行号、列号,pdh,pdl 的值分别传给窗口右下角行号、列号,pbh 的值则传给窗口底部卷入行属性。
3、利用已经定义好的宏,清屏时可以宏调用。 宏调用语句为:CLEAR 0,0,24,79,7 (2)子程序设计 在接受键盘输入后,判断 AL 的值,如果是“1”就调用小鸟子程序,如果是“2”就调 用汽车子程序,如果是“3”就结束退出。在小鸟子程序中又嵌套了延时子程序,在汽车子 程序中又嵌套了多个子程序。 (3)显示小鸟字符图形 程序中利用 BIOS 系统功能中 10H 中断的 09 号功能进行小鸟字符图形的显示, 程序段如 下: MOV AH,9 MOV AL,76H MOV BL,10 INT 10H 要是小鸟字符图形显示的更清晰,则需要延时。循环指令 LOOP,当 CX 不为零时,执行 循环转
4、移分支;当 CX 为零时,退出循环。延时子程序为: 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 上述子程序用两层循环实现延时,内循环实现单位时间延时,外循环次数由寄存器 DX 决定。 (4)显示汽车字符图形 因为汽车是多字符显示,所以在子程序中还嵌套了显示汽车图形和清屏两个子程序。 MOV CH,0 MOV CL,DI INC DI MOV CHAR,CX MOV POINTER,DI MOV LINE,DH
5、 MOV COL,DL 此段程序把 CH 的值设为了 0,又因为 CL 中存放字符的个数,所以 CL=6,DI 指向字符 图形表中的第一个字符。 三、设计原理及方案 1、设计原理图: 图 3-1 主程序 图 3-2 小鸟子程序 图 3-3 汽车子程序 2、设计方案: 在屏幕上显示动画的效果可以按以下五步进行: (1)在屏幕上显示图形 ASCII 码表,选择“V”来显示小鸟, “V”的 ASCII 码为 76H,查表选择彩色文本模式下 的 IRGB 组合成的通用颜色,选择亮绿色,色号为 10。显示汽车时用多字符图形显示,用 6 个字符组合来显示汽车,ASCII 码分别为 52H、0B1H、0DB
6、H、0DBH、4FH、4FH,显示属性为 白色,即色号为 7。在设置字符显示位置时,是通过两两字符间的相对坐标来实现的。 (2)延时一个时间周期,这样图形更清晰。 这里要用到延时子程序及其调用。 (3)消除图形 在进行小鸟清屏时,可使用清屏宏调用,只需在程序前面进行清屏宏定义。而在进行汽 车的清屏时,由于汽车是由对字符图形显示的,所以不采用清屏宏调用,而是通过修改字符 显示属性来进行清屏。 (4)改变图形的行、列坐标。 因为要求小鸟从屏幕飞过, 所以小鸟的飞行路径不是水平也不是垂直的, 所以要同时改 变字符的行、列坐标;而汽车从左至右行驶,所以只需要改变汽车的列坐标。 (5)返回第一步,重复上述过程。 利用 BIOS 系统功能中 10H 中断的 06 号功能进行清屏, 循环调用 09 号功能显示字符图 形; 延迟一段时间后,