基于8086实现的贪吃蛇
assume cs:code,ds:data
data segment
dw 200 dup(0) ;--蛇身坐标
dw 0,0,0 ;--存储原始9号中断
data ends
stack segment
db 100 dup(0)
stack ends
code segment
start:
;;-----------------将原始的9号中断存在data断的最后,再把9号地址换掉到offset int9
mov ax,0
mov es,ax
mov ax,data
mov ds,ax
push es:[9*4]
pop ds:[400]
push es:[9*4+2]
pop ds:[402]
mov word ptr es:[9*4],offset int9
mov word ptr es:[9*4+2],cs
;;------------------
mov ax,stack
mov ss,ax
mov sp,100
mov ax,0b800h
mov es,ax
;;-----------------snake的初始化
mov bx,0
mov cx,10
s: mov ds:[bx],cx
add bx,2
loop s
mov word ptr ds:[404],9
call putfood
mov bx,0001h
mov cx,60000
s1:
call movnext
call delay
loop s1
;;------------恢复中断向量,程序结束
end_snake:
mov ax,0
mov es,ax
push ds:[400]
pop es:[9*4]
push ds:[402]
pop es:[9*4+2]
mov