assume cs:codes
codes segment
start :
mov ah,00h
mov al,04h
int 10h
mov ah,09h
mov al,'a'
mov bl,011111001b
mov cx,20
int 10h
mov bx,150 ;ÉèÖÃ?É?ú?õÊ?Ë?Æ?Î?ÖÃ
mov bp,180 ;ÉèÖÃ?É?ú?õÊ???Ö?Î?ÖÃ
lop3:
call play_plane1
call play_plane
mov cx,bx
mov dx,bp
mov ah,0h
int 16h
cmp ah,72
je up
cmp ah,80
je down
cmp ah,75
je left
cmp ah,77
je right
cmp ah,16
je quite
jmp lop3
up: sub bp,3
jmp lop3
down: add bp,3
jmp lop3
left: sub bx,3
jmp lop3
right: add bx,3
jmp lop3
quite:
mov ah,4ch
int 21h
;////////////////////////////////////// play_plane proc ;//?-Íæ?Ò?É?ú×Ó?ÌÐò ??Èë?ÎÊýbxÉèÖÃ?É?úµÄË?Æ?Î?ÖÃ
BPÉèÖÃ?É?úµÄ??Ö?Î?Öà BX,BP?ÇÂ??É?úµÄÎ?ÖÃ
push cx
push dx
push es
push si
push di
push ax
jmp sk
play_plane_1: dw
6,1,1,5,2,3,5,3,3,5,4,3,4,5,5,3,6,7,1,7,11,1,8,11,4,9,5,5,10,3,4,1
1,5,3,12,7,4,13,2,7,13,2 ;X0,Y,???È sk:
mov cx,ax
mov ax,cs
mov es,ax
mov di,0
lop2: mov cx,word ptr es:[play_plane_1+di] ;x0
add cx,bx
mov dx,word ptr es:[play_plane_1+di+2] ;y
add dx,bp
mov si,word ptr es:[play_plane_1+di+4] ;???È
call sp_line
add di,6
cmp di,84
jne lop2
pop ax
pop di
pop si
pop es
pop dx
pop cx
ret
play_plane endp
;//////////////////////
;?-Ë?Æ?Ö?Ïß ;Èë?Ú?ÎÊý CXÏàµ?ÓÚX0 DXÏàµ?ÓÚY0,Y1 siÍ?Ïñ???È blÏñËØ
sp_line proc
push ax
push bx
mov bl,2 ;?É?úµÄÑÕÉ?
mov ah,0ch
mov al,bl
lop: int 10h
inc cx
dec si
jnz lop
pop bx
pop ax
ret
sp_line endp
;/////////////////////////////
play_plane1 proc ;?Á?ö?É?ú?ì??×Ó?ÌÐò ??Èë?ÎÊýCX,DX
push si
push di
inc cx
mov si,13
mov di,0
lop5: inc di
inc dx
call sp_line1
cmp di,14
jne lop5
pop di
pop si
ret
play_plane1 endp ;////////////////////////////////////////
;?-Ë?Æ?Ö?Ïß ;Èë?Ú?ÎÊý CXÏàµ?ÓÚX0 DXÏàµ?ÓÚY0,Y1 siÍ?Ïñ???È blÏñËØ
sp_line1 proc
push ax
push bx
push bp
push di
mov bp,cx
mov di,11
mov bl,0 ;?É?úµÄÑÕÉ? ÓÃÀ??Á?ýÔ-À?µÄ?É?ú
mov ah,0ch
mov al,bl
lop1: int 10h
inc cx
dec di
jnz lop1
mov cx,bp
pop di
pop bp
pop bx
pop ax
ret
sp_line1 endp
;/////////////////////////////
;//////////////??Éä×Óµ?×Ó?ÌÐò
;Èë?Ú?ÎÊý Íæ?Ò?É?ú??Éä?ÚµÄ×ø?êbx+6,bp
;?-??Ö?Ö?Ïß ;Èë?Ú?ÎÊý CXÏàµ?ÓÚX0 DXÏàµ?ÓÚy0 siÍ?Ïñ???È blÏñËØ
sp_line2 proc
push ax
mov ah,0ch
mov al,bl lop6: int 10h
inc dx
dec si
jnz lop6
pop ax
ret
sp_line2 endp
;/////////////////////////////
;/////////////////ÑÓÊ?
delay proc
push dx
push cx
mov cx,02h
sleep2:
mov dx,0ffffh ;ÈÃ?ÌÐòÔÝÍ?Ò??ÎÊ??ä
sleep1: dec dx
cmp dx,0 jne sleep1
dec cx
cmp cx,0 jne sleep2
pop cx
pop dx
ret
delay endp ;//////////////////
codes ends end start