macro timer_wait
local wait_loop
local change
wait_loop:
mov ah,2ch
int 21h
mov [prevMil],dl ;get first tick
change:
move ah,2ch
int 21h
cmp dl,[prevMil] ;check if we got a change in timer
je change
endm timer_wait
proc Settings_Move
mov si, offset arr.x
Settings_1:
add si,11
cmp [byte ptr si],0
jne Settings_1
sub si,11
print_tail 0
call Touching_Apple_Check
call Move_Snake
mov [flagout],0
call Touching_Himself
cmp [flagout],1
je exitset
mov si, offset arr.x
print_snake_node_loop:
print_tail [colorsnake]
add si,11
cmp [byte ptr si],0
jne print_snake_node_loop
timer_wait ;THE ISSUE
mov bx, offset arr.directionBefore
copy:
mov al,[bx+1]
mov [bx],al
add bx,11
cmp [byte ptr bx],0
jne copy
exitset:
ret
endp Settings_Move
Я вызываю таймер макроса на l oop, пока таймер не изменит свое значение (в основном используется для ожидания движения змеи). Вы можете увидеть ошибку на картинке, предопределение определено как:
DATASEG prevMil db?
Я вызываю функцию таймера Спасибо за помощь!