实时按键事件组件 x86 TASM
Real time keypress event assembly x86 TASM
我正在尝试在 TASM 中制作贪吃蛇游戏,但遇到了问题;我似乎无法弄清楚如何在等待按键时让 Snake 保持移动,因为 ah = 0 和 int 16h 正在停止 Snake 并等待按键。
有人可以帮我吗?
您可以使用 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
我正在尝试在 TASM 中制作贪吃蛇游戏,但遇到了问题;我似乎无法弄清楚如何在等待按键时让 Snake 保持移动,因为 ah = 0 和 int 16h 正在停止 Snake 并等待按键。 有人可以帮我吗?
您可以使用 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