![]() |
|
|
![]()
|
|
| RedShadow |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 11.12.2005 Репутация: нет Всего: нет |
Когда писал змею (показано в недописанном виде, так что не удивляйтесь, почему там одна голова), обратил внимание на её странное поведение: при подходе к левому краю экрана голова иногда сбивается вниз...без нажатия клавишию
masm .model small .stack 100h .data right=1 left=2 up=4 down=8 body='*' head='@' fill=' ' dir db up leng dw 5 score db 0 maxx=80 maxy=24 maxleng=2000 x db 12 y db 20 .code calc proc push ax push bx mov al,80 mul bh xor bh,bh add ax,bx shl ax,1 mov di,ax pop bx pop ax ret calc endp main proc begin: mov ax,@data mov ds,ax mov ax,3 int 10h ;clear screeen mov bl,10 ;x in bl mov bh,10 ;y in bh push 0B800h pop es cycle: redraw: call calc mov ah,4 mov al,fill mov es:[di],ax ;out '@' to (x,y) xor al,al mov ah,6 mov dl,0FFh int 21h ;was pressed key? jz d ;if key was not pressed then go to processing of d[irection] cmp al,'Q' je ex cmp al,'q' je ex cmp al,27 je ex jmp apro ex:jmp exit apro:cmp al,'A' je dleft cmp al,'a' je dleft cmp al,75 je dleft cmp al,'S' je ddown cmp al,'s' je ddown cmp al,80 je ddown cmp al,'D' je dright cmp al,'d' je dright cmp al,77 je dright cmp al,'W' je daup cmp al,'w' je daup cmp al,72 je daup d: cmp dir,left je rleft cmp dir,down je rdown cmp dir,right je rright cmp dir,up je rup dleft: cmp dir,right je rright mov dir,left jmp rleft ddown: cmp dir,up je rup mov dir,down jmp rdown dright: cmp dir,left je rleft mov dir,right jmp rright daup: cmp dir,down je rdown mov dir,up jmp rup ;we have direction rleft: dec bl jmp xless rdown: inc bh jmp xless rright: inc bl jmp xless rup: dec bh xless: cmp bl,-1 jne xgreater mov bl,maxx xgreater: cmp bl,maxx+1 jne yless mov bl,0 yless: cmp bh,-1 jne ygreater mov bh,maxy ygreater: cmp bh,maxy+1 jne draw mov bl,0 draw: call calc mov ah,4 mov al,head mov es:[di],ax ;out '@' to (x,y) push bx mov ah,2 int 1ah mov bl,dh and bl,0Fh inc bl cmp bl,10 jne delay ;delay : 1 second mov bl,0 delay: mov ah,2 int 1ah and dh,0Fh cmp dh,bl jne delay pop bx jmp cycle exit: ;mov ah,0 ;int 16h mov ax,4c00h int 21h main endp end main Это сообщение отредактировал(а) RedShadow - 12.12.2005, 07:35 |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |