📄 snake.asm
字号:
.model small
.386p
.data
snake db ' -============#'
pos db 21h,0ch,22h,0ch,23h,0ch
db 24h,0ch,25h,0ch,26h,0ch
db 27h,0ch,28h,0ch,29h,0ch
db 2ah,0ch,2bh,0ch,2ch,0ch
db 2dh,0ch,2eh,0ch,2fh,0ch
tail db 0
.stack 100
.code
.startup
mov al,0
mov bh,10h
mov ah,6
mov cx,0
mov dl,79
mov dh,24
int 10h
lea si,pos
L0: xor ch,ch
mov cl,15
lea di,snake
L1: mov dh,[si+1]
mov dl,[si]
mov bh,0
mov ah,2
int 10h
mov bh,0
mov al,[di]
push cx
mov cx,1
mov bl,1eh
mov ah,9
int 10h
pop cx
inc di
inc si
inc si
cmp si,offset tail
jne A1
lea si,pos
A1: loop L1
mov di,si
mov bx,di
cmp bx,offset pos
jne A2
lea bx,tail
A2: sub bx,2
mov cx,bx
cmp cx,offset pos
jne A3
lea cx,tail
A3: sub cx,2
inc si
inc si
cmp si,offset tail
jne J0
lea si,pos
J0: mov ah,0
int 16h
cmp ah,72
jne J1
mov al,[bx]
mov [di],al
mov al,[bx+1]
dec al
cmp al,-1
jne M0
mov al,24
M0: mov [di+1],al
mov al,[di]
xchg cx,bx
mov dh,[bx]
cmp al,dh
jne L0
mov al,[di+1]
mov dh,[bx+1]
cmp al,dh
jne L0
xchg cx,bx
jmp J0
J1: cmp ah,80
jne J2
mov al,[bx]
mov [di],al
mov al,[bx+1]
inc al
cmp al,26
jne M1
mov al,0
M1: mov [di+1],al
mov al,[di]
xchg cx,bx
mov dh,[bx]
cmp al,dh
jne L0
mov al,[di+1]
mov dh,[bx+1]
cmp al,dh
jne L0
xchg cx,bx
jmp J0
J2: cmp ah,75
jne J3
mov al,[bx+1]
mov [di+1],al
mov al,[bx]
dec al
cmp al,-1
jne M2
mov al,79
M2: mov [di],al
mov al,[di]
xchg cx,bx
mov dh,[bx]
cmp al,dh
jne L0
mov al,[di+1]
mov dh,[bx+1]
cmp al,dh
jne L0
xchg cx,bx
jmp J0
J3: cmp ah,77
mov al,[bx+1]
mov [di+1],al
mov al,[bx]
inc al
cmp al,80
jne M3
mov al,0
M3: mov [di],al
mov al,[di]
xchg cx,bx
mov dh,[bx]
cmp al,dh
jne L0
mov al,[di+1]
mov dh,[bx+1]
cmp al,dh
jne L0
xchg cx,bx
jmp J0
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -