汇编模拟贪吃蛇游戏[BUG制造专家]

本文介绍了一位编程爱好者使用汇编语言,挑战制作了一个充满BUG的贪吃蛇游戏。程序虽简陋且存在明显错误,但展示了作者在汇编领域的实践尝试。
摘要由CSDN通过智能技术生成

正如标题所说,这是个BUG的制造专家,程序不仅简陋,甚至丑陋的的程序,而且BUG是那样的BUG

 

assume cs:code,ss:stack,ds:data
stack segment
    db 64 dup (0)
stack ends
data segment
 
data ends
code segment
    show_arr:cli
             mov ax,0b800h
             mov es,ax
             
             mov bx,0
             mov cx,4000
             mov ax,0000001000000000b
          s: mov es:[bx],ax
             inc bx
             inc bx
             loop s
             
             mov bx,0
             mov cx,80
             mov dl,'-'
             mov ax,0
        line:mov bx,ax
             add bx,ax
             mov es:[bx],dl
             mov es:[bx+24*160],dl
             inc ax
             loop line
             
             mov bx,0
             mov cx,25
             mov dl,'|'
             mov di,0
        col: mov bx,di
             mov al,160
             mul bl
             mov bx,ax
             mov es:[bx],dl
             mov es:[bx+158],dl
             inc di
             loop col
             
   snak_body:jmp snak
   
        trend dw +2,+2,-160,-2,+160
                             
        snak:mov dl,'*'
             mov si,16*160+24*2
             mov bx,si
             mov cx,4
             mov ax,0
             mov ax,trend[0]
     snak_0: add bx,ax
             mov es:[bx],dl
             loop snak_0
             
             push bx
             mov bx,160*8+2*56
             mov byte ptr es:[bx],'

pop bx mov ax,trend[2] sti move: add bx,trend[0] cmp byte ptr es:[bx],'|' je over cmp byte ptr es:[bx],'-' je over cmp byte ptr es:[bx],'*' je over cmp byte ptr es:[bx],'
je set_money jmp mov_snak mov_snak:call timelag mov es:[bx],dl add si,ax cmp byte ptr es:[si],'*' jne cls_snak_chg cls_snak:mov byte ptr es:[si],0 jmp move cls_snak_chg:sub si,ax mov ax,2 add si,ax cmp byte ptr es:[si],'*' je cls_snak sub si,ax mov ax,-2 add si,ax cmp byte ptr es:[si],'*' je cls_snak sub si,ax mov ax,-160 add si,ax cmp byte ptr es:[si],'*' je cls_snak sub si,ax mov ax,160 add si,ax cmp byte ptr es:[si],'*' je cls_snak timelag:push bx push ax mov bx,09FFH fr_1: dec bx mov ax,0FFFFH fr_2: dec ax cmp ax,0 jne fr_2 cmp bx,0 jne fr_1 pop ax pop bx ret over:jmp show_over over_show db 'Game Over!',0 set_money:mov es:[bx],dl add bx,trend[0] push ax push bx push cx push dx mov ah,02 int 1ah mov al,dh mov ah,0 mov dh,79 div dh inc ah mov al,ah mov dh,2 mul dh mov bx,ax call timelag mov ah,02h int 1ah mov al,dh mov ah,0 mov dh,23 div dh inc ah mov al,ah mov dh,160 mul dh add bx,ax mov byte ptr es:[bx],'
pop dx pop cx pop bx pop ax jmp mov_snak show_over: mov bx,12*160+30*2 mov ax,0 mov di,0 f_show: mov al,over_show[di] cmp al,0 je over_show_end mov es:[bx],al inc di add bx,2 jmp f_show over_show_end: mov ax,0 mov ds,ax mov ax,ds:[200h] mov ds:[4*9],ax mov ax,ds:[202h] mov ds:[4*9+2],ax mov ax,4c00h int 21h int_9:push ax push bx push ds in al,60h pushf mov bx,0 mov ds,bx call dword ptr ds:[200h] cmp al,4dh je life cmp al,48h je up cmp al,4bh je right cmp al,50h je down jmp int_9end life: mov ax,trend[2] mov trend[0],ax jmp int_9end up: mov ax,trend[4] mov trend[0],ax jmp int_9end right: mov ax,trend[6] mov trend[0],ax jmp int_9end down: mov ax,trend[8] mov trend,ax jmp int_9end int_9end:pop ds pop bx pop ax iret start:cli mov ax,0 mov ds,ax mov ax,ds:[4*9] mov ds:[200h],ax mov ax,ds:[4*9+2] mov ds:[202h],ax mov ax,cs mov word ptr ds:[4*9],offset int_9 mov word ptr ds:[4*9+2],ax call show_arrcode endsend start

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值