画面内の単一の文字を移動する emu8086 で記述された単純な EXE コードがあります (今のところ):
あの黄色い「*」は矢印キーで動きます。
問題は、エミュレータが 16 個のキーを押すことです。つまり、キーをすばやく押す (またはキーを押したままにする) と、キーの押下がスタックに保持され、それらに基づいて「*」が移動します。例えば:
上の写真では、「*」は、前に押したキーに基づいて 14 回移動します。
キープレスをスタックに保持したくありません。スタックではなく、最後に押されたキーに基づいてリアルタイムの反応を得るにはどうすればよいですか?
PS: これは、ユーザーからキーを押して、現在の場所に空の文字を出力し、「*」を新しい場所に移動する部分です。
check_for_key:
; === check for player commands:
mov ah, 01h
int 16h
jz no_key
mov ah, 00h
int 16h
mov cur_dir, ah
; print ' ' at the location:
mov al, ' '
mov ah, 09h
mov bl, 0eh ; attribute.
mov cx, 1 ; single char.
int 10h
call move_star