北交微机原理课设-动画程序设计(小鸟和小车) - 图文 联系客服

发布时间 : 星期一 文章北交微机原理课设-动画程序设计(小鸟和小车) - 图文更新完毕开始阅读0c0aad4d19e8b8f67d1cb937

图3-2 小鸟子程序 图3-3 汽车子程序

2、设计方案:

在屏幕上显示动画的效果可以按以下五步进行: (1)在屏幕上显示图形

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

在进行小鸟清屏时,可使用清屏宏调用,只需在程序前面进行清屏宏定义。而在进行汽车的清屏时,由于汽车是由对字符图形显示的,所以不采用清屏宏调用,而是通过修改字符显示属性来进行清屏。

(4)改变图形的行、列坐标。

因为要求小鸟从屏幕飞过,所以小鸟的飞行路径不是水平也不是垂直的,所以要同时改

变字符的行、列坐标;而汽车从左至右行驶,所以只需要改变汽车的列坐标。 (5)返回第一步,重复上述过程。

利用BIOS系统功能中 10H中断的06号功能进行清屏,循环调用09号功能显示字符图形;延迟一段时间后,再循环调用09号功能,设置BL寄存器的值为0(黑底黑字显示字符图形),以达到擦除图形的效果;改变行、列坐标,调用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,1 DB 0DBH,7,0,1 DB 0DBH,7,0,1 DB 4FH,7,1,0 DB 4FH,7,0,-3 DB 2,7,-2,1 CHAR 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 ;从键盘读取字符到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, 0 MOV AL,02H INT 10H

MOV AH,6 ;调用6号功能

MOV AL,0 ;设置整个屏幕为空白 MOV CH,pch

MOV CL,pcl ;窗口左上角行列数 MOV DH,pdh

MOV DL,pdl ;窗口左上角行列数 MOV BH,pbh ;正常属性显示 INT 10H ENDM

BIRD 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,[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

延时