📄 num2.asm
字号:
.model small
.stack 64
.data
point1 word 2 dup(?)
point2 word 2 dup(?)
shoot word 250
gun word 250
.code
main proc
mov ax,@data
mov ds,ax
mov ah,00
mov al,12h
int 10h
L1:
mov cx,3
L2:
mov ah,01
int 16h
jz r1
jmp r2
r1:
jmp L7
r2:
mov ah,00
int 16h
cmp al,64h
jne L3
call cleargun
add gun,12
cmp gun,531
jbe L4
sub gun,12
L4:
call gunshow
call delay
jmp L7
L3:
cmp al,61h
jne L5
call cleargun
sub gun,12
cmp gun,105
jae L6
add gun,12
L6:
call gunshow
call delay
jmp L7
L5:
cmp al,73h
jne L7
call bullet
call delay
call bulletclear
mov ax,gun
sub ax,shoot
cmp ax,0
jb L7
cmp ax,12
ja L7
call cleartarget
mov shoot,89
jmp L7
r3:
jmp L2
L7: loop r3
call cleartarget
call targetmov
call gunshow
call side
call delay
call delay
mov al,0
mov ah,01
int 16h
cmp al,71h
je L8
jmp L1
L8:
mov ah,4ch
int 21h
main endp
draw proc
push si
push di
push dx
push cx
push ax
mov si,offset point1
mov di,offset point2
mov dx,[si]
mov ah,0ch
draw1:
mov cx,[si+2]
draw2:
int 10h
inc cx
cmp cx,[di+2]
jbe draw2
inc dx
cmp dx,[di]
jbe draw1
pop ax
pop cx
pop dx
pop di
pop si
ret
draw endp
side proc
push si
push di
push ax
push bx
mov si,offset point1
mov di,offset point2
mov al,01
mov bh,0
mov [si],9
mov [si+2],100
mov [di],10
mov [di+2],540
call draw
mov [si],9
mov [si+2],540
mov [di],469
mov [di+2],539
call draw
mov [si],9
mov [si+2],100
mov [di],469
mov [di+2],101
call draw
mov al,02
mov [si],469
mov [si+2],100
mov [di],470
mov [di+2],540
call draw
pop bx
pop ax
pop di
pop si
ret
side endp
targetmov proc
push si
push di
push ax
push bx
add shoot,12
cmp shoot,527
jbe mov1
mov shoot,101
mov1:
mov si,offset point1
mov di,offset point2
mov ax,shoot
mov [si],20
mov [si+2],ax
mov [di],26
add ax,12
mov [di+2],ax
mov bh,00
mov al,02
call draw
pop bx
pop ax
pop di
pop si
ret
targetmov endp
gunshow proc
push si
push di
push ax
push bx
mov si,offset point1
mov di,offset point2
mov [si],451
mov ax,gun
mov [si+2],ax
mov [di],463
add ax,4
mov [di+2],ax
mov al,04
mov bh,0
call draw
mov ax,gun
mov [si],463
sub ax,4
mov [si+2],ax
mov [di],469
add ax,12
mov [di+2],ax
mov bh,0
mov al,2
call draw
pop bx
pop ax
pop di
pop si
ret
gunshow endp
cleargun proc
push si
push di
push ax
push bx
mov si,offset point1
mov di,offset point2
mov [si],451
mov ax,gun
mov [si+2],ax
mov [di],463
add ax,4
mov [di+2],ax
mov al,00
mov bh,0
call draw
mov ax,gun
mov [si],463
sub ax,4
mov [si+2],ax
mov [di],469
add ax,12
mov [di+2],ax
mov bh,0
mov al,00
call draw
pop bx
pop ax
pop di
pop si
ret
cleargun endp
cleartarget proc
push si
push di
push ax
push bx
mov si,offset point1
mov di,offset point2
mov ax,shoot
mov [si],20
mov [si+2],ax
mov [di],26
add ax,12
mov [di+2],ax
mov bh,00
mov al,00
call draw
pop bx
pop ax
pop di
pop si
ret
cleartarget endp
delay proc
push cx
push ax
mov cx,8286
delay1:
in al,61h
cmp al,ah
je delay1
mov ah,al
loop delay1
pop ax
pop cx
ret
delay endp
bullet proc
push si
push di
push ax
push bx
push cx
mov al,7
mov bh,00
mov si,offset point1
mov di,offset point2
mov cx,gun
mov [si],26
mov [si+2],cx
mov [di],451
mov [di+2],cx
call draw
pop cx
pop bx
pop ax
pop di
pop si
ret
bullet endp
bulletclear proc
push si
push di
push ax
push bx
push cx
mov al,0
mov bh,00
mov si,offset point1
mov di,offset point2
mov cx,gun
mov [si],26
mov [si+2],cx
mov [di],451
mov [di+2],cx
call draw
pop cx
pop bx
pop ax
pop di
pop si
ret
bulletclear endp
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -