2

私はキーボード入力を待機するINT16hに精通していますが、ゲームを開発しているので、画面上のものをアニメーション化するゲームループが必要です。キーボードがヒットするたびに、8086が実行されます。割り込みハンドラに送信し、それに応じてデータを更新するためにどのキーが押されたかを教えてください。

どうすればそうできますか?

4

2 に答える 2

4

INT 16を呼び出すときに、0ではなく1のAHで入力をポーリングすることもできます。

INT 16h / AH = 01h - check for keystroke in the keyboard buffer.

    return:

        ZF = 1 if keystroke is not available.
        ZF = 0 if keystroke available.
        AH = BIOS scan code.
        AL = ASCII character.
        (if a keystroke is present, it is not removed from the keyboard buffer). 

(ソース。)

于 2012-12-20T10:46:09.597 に答える
2

MS-DOSでは、独自のカスタムキーボード割り込みハンドラーを記述できます。カスタムキーボード割り込みハンドラーコードでは、次のように記述できます。

  1. キーが押されたことをメインループ/描画ループに通知するフラグを、キーのスキャンコードとともに設定します。または...

  2. キーのスキャンコードに従って、カスタム割り込みハンドラーのメインループ/描画ループのコードを変更します。

カスタム[キーボード]割り込みハンドラの記述の詳細については、例を参照してください。

于 2012-12-20T12:39:50.423 に答える