Я пытаюсь сделать игру Snake в TASM, но у меня есть проблема; Я не могу понять, как заставить Снейка двигаться, ожидая нажатия клавиши, потому что ah = 0 и int 16h останавливает Змею и ждет нажатия клавиши. Может кто-нибудь, пожалуйста, помогите мне с этим?сборка событий в режиме реального времени x86 TASM
1
A
ответ
2
Вы можете использовать int 21h
, ah=0BH
, чтобы проверить, если клавиша была нажата, без остановки программы, например:
game:
;CHECK IF KEY WAS PRESSED.
mov ah, 0bh
int 21h ;◄■■ RETURNS AL=0 : NO KEY PRESSED, AL!=0 : KEY PRESSED.
cmp al, 0
je move_snake
;PROCESS KEY.
mov ah, 0
int 16h ;◄■■ GET THE KEY.
move_snake:
jmp game
Полный пример (не змея, конечно):
.model small
.stack 100h
.data
.code
mov ax, @data
mov ds, ax
game:
;CHECK IF KEY WAS PRESSED.
mov ah, 0bh
int 21h
cmp al, 0
je move_snake
;PROCESS KEY.
mov ah, 0
int 16h
mov ah, 2
mov dl, al
int 21h ;◄■■ DISPLAY PRESSED KEY.
move_snake:
mov ah, 2
mov dl, '.'
int 21h ;◄■■ DISPLAY SOMETHING.
jmp game
mov ax, 4c00h
int 21h
+1
Спасибо, человек! действительно необходимо, чтобы – user6181605
Почему вы программируете игру DOS в 2017 году? – zwol
Вы можете использовать опрос в цикле или обработчик прерываний. – Jester
@zwol School ... – user6181605