flat assembler
Message board for the users of flat assembler.
Index
> DOS > TASM to FASM. Snake. |
Author |
|
Picnic 18 May 2011, 16:00
Hi,
Try now, Code: org 100h start: mov ax,cs add ax,1000h mov ds,ax push 0A000h pop es mov ax,13h int 10h mov di,320*200 mov cx,600h rep stosb xor si,si mov bp,10 jmp init_food main_cycle: call delay mov ah,1 int 16h jz short no_keypress xor ah,ah int 16h cmp ah,48h jne short not_up mov word [cs:move_direction],-320 not_up: cmp ah,50h jne short not_down mov word [cs:move_direction],320 not_down: cmp ah,4Bh jne short not_left mov word [cs:move_direction],-1 not_left: cmp ah,4Dh jne short no_keypress mov word [cs:move_direction],1 no_keypress: and bp,bp jnz short advance_head lodsw xchg bx,ax mov byte [es:bx],0 mov bx,ax inc bp advance_head: dec bp add bx,word [cs:move_direction] mov al,[es:bx] and al,al jz short move_worm cmp al,0Dh je short grow_worm mov ax,3 int 10h ret move_worm: mov [di],bx inc di inc di mov byte [es:bx],09 cmp byte [cs:eaten_food],1 je if_eaten_food jmp short main_cycle grow_worm: push bx mov bx,word [cs:food_at] xor ax,ax call draw_food call random and ax,3Fh mov bp,ax mov byte [cs:eaten_food],1 pop bx jmp short move_worm if_eaten_food: mov byte [cs:eaten_food],0 init_food: push bx make_food: call random and ax,0FFFEh mov bx,ax xor ax,ax cmp word [es:bx],ax jne make_food cmp word [es:bx+320],ax jne make_food mov word [cs:food_at],bx mov ax,0D0Dh call draw_food pop bx jmp main_cycle delay: pusha mov ah, 0 int 1ah mov bx,dx add bx, 1 d1: int 1ah cmp dx, bx jb d1 popa ret draw_food: mov [es:bx],ax mov word [es:bx+320],ax retn random: mov ax,word [cs:seed] mov dx,8E45h mul dx inc ax mov word [seed],ax ret eaten_food db 0 move_direction dw 1 ;1 - left, -1 - right, 320 - down, -320 - up seed: food_at dw seed+2 |
|||
18 May 2011, 16:00 |
|
S3nsitive 18 May 2011, 16:34
Oh thx!!! U r genius!
|
|||
18 May 2011, 16:34 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.