📄 plane.txt
字号:
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,11,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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -