CtrlキーとShiftキーを使用して左右にシフトし、キーボードで制御されるアセンブリ8086でアニメーションを作成しようとしています。
私は8086でキーボードからの入力を受け取る方法を調べ、押されたキーがCtrlキーまたはShiftキー(および通常はどのキーが押されたか)であることを確認する方法を調べました。
どうもありがとうございます!
これを BIOS のみで実行していると仮定すると、より高いレベルの BIOS キーボード割り込みを使用する方が簡単であることがわかる場合があります。一般的なキーストロークにはint 0x16 AH=0x01 、ctrl/shift にはint 0x16 AH=0x02などが考えられます。他にも多くの可能性がありますが (他の int 0x16 コマンドや、以前に提案されたように、低レベルのキーボード int 0x09 と BIOS データ領域を含む..私はRalf Brown の割り込みリストの推奨を強く支持します-優れたリソースです!
左右に矢印キーを使用したくないですか? コントロールとシフトの問題は、キーを「返す」のではなく、押された別のキーを変更することです。これはキーボード割り込みハンドラ (9、IIRC) で処理され、「フック」することができます。「Bios Data Area」を調べて、割り込みハンドラがコントロール キーとシフト キーの状態を追跡している場所を確認する方が簡単だと思います。BDA はセグメント 40h にあったようです。17h と 18h のキーボード ステータス フラグは? それらのオフセットについて私の言葉を鵜呑みにしないでください。調べてください。Ralf Brown の割り込みリスト。これはすべて、「8086」が古代などを意味すると想定しています。:)
Bios はキーを 16 文字のバッファーに格納します。OSが遅すぎる場合、次のキーストロークを読み取るたびにバッファから読み取ることを意味します。
ah を 02h に設定して int 16h を使用すると、バッファー内の次の文字として al を設定できます。ただし、バッファのステータスをチェックしている場合(キーがあるかどうか)は、これを見てください。それは基本的にah 02hのより深いところに入ります
あなたは矢印キーについて尋ねているので、ここにそれらの16進コードがあります: