Я хочу переместить символ в строке [начальная строка = 0], и если строка [строка = 50], она остановится
Знаете ли вы, что ваша программа меняет столбец вместо строки?
lea dx, snake
mov ah, 2
int 21h
Тот факт, что приведенный выше код уничтожает ваш столбец в DL
, можно исправить двумя способами:
. Сохранение DL
в стеке
push dx
lea dx, snake
mov ah, 09h
int 21h
pop dx
. Не уничтожать DL
с помощью другой функции вывода
mov cx, 1
mov bh, 0
mov al, '>'
mov ah, 0Ah
int 10h
Чтобы почувствовать движение, вам нужно убрать объект со старого места:
lb1:
mov cx, 1
mov bh, 0
mov al, ' ' ;Remove at old place
mov ah, 0Ah
int 10h
inc dl ;Goto to new place (next column)
mov dh, 5 ;Row 5, Column in DL
mov bh, 0
mov ah, 02h
int 10h
mov cx, 1
mov bh, 0
mov al, '>' ;Show at new place
mov ah, 0Ah
int 10h
cmp dl, 50
jbe lb1
Поскольку все произойдет так быстро, вы не увидите движения! Вам понадобится пауза после того, как вы показали объект.
В качестве быстрой альтернативы я буду использовать ожидание нажатия клавиши:
lb1:
mov cx, 1
mov bh, 0
mov al, ' ' ;Remove at old place
mov ah, 0Ah
int 10h
inc dl ;Goto to new place (next column)
mov dh, 5 ;Row 5, Column in DL
mov bh, 0
mov ah, 02h
int 10h
mov cx, 1
mov bh, 0
mov al, '>' ;Show at new place
mov ah, 0Ah
int 10h
mov ah, 00h ;Wait for a keystroke.
int 16h
cmp dl, 50
jbe lb1