2
私の目標は、ユーザーがエスケープキーを押すことを決定するまで、矢印キーを使用してプログラム内を上下に移動できるInt 16命令を使用することです。ループで次のコードを使用し、最後に終了条件を追加するか、私が紛失しているものがあるか、複数のキーを押して読み込みますか?キーボードを使用してプログラムをナビゲートするには、Int 16hをどのように実装しますか?
Mov ah,00
int 16
私の目標は、ユーザーがエスケープキーを押すことを決定するまで、矢印キーを使用してプログラム内を上下に移動できるInt 16命令を使用することです。ループで次のコードを使用し、最後に終了条件を追加するか、私が紛失しているものがあるか、複数のキーを押して読み込みますか?キーボードを使用してプログラムをナビゲートするには、Int 16hをどのように実装しますか?
Mov ah,00
int 16
Mov ah,00 int 16
アセンブリ言語のプログラミングは、あなたが正確である必要があります。
BIOSキーボードの機能はint 16h
にあります。つまり、書いたではなく、です。大したことではないかもしれませんが、それは成功と失敗の違いです。
MainLoop:
mov ah, 01h ;BIOS.TestKey
int 16h
jz StuffToDoRegardlessOfAnyKey
mov ah, 00h ;BIOS.GetKey
int 16h
cmp al, 27 ;Is it ESCAPE ?
jne ProcessOtherKey
ProcessEscapeKey:
...
...
ProcessOtherKey:
...
...
jmp MainLoop
StuffToDoRegardlessOfAnyKey:
...
...
jmp MainLoop
これは、キーボードを使用してナビゲートする問題を解決するために、スケルトンプログラムです。 MainLoopが繰り返されるたびに、保留中の鍵がある場合はBIOSキーボード機能01hで最初にテストされます。
[ "16,0をint型"](http://stanislavs.org/helppc/int_16-0.html)ブロックしています、それはキーを押すのを待つでしょう。 「メニューループ」ごとに一度だけ呼び出す必要があります。そのため、ユーザーからのすべてのキーをすべてのオプションと比較します。それはあなたが問題を見ているか、あなたが尋ねていることはあまり明確ではないが、これは "広すぎる"ということだ。紙面上に描いたスケッチをいくつかやってみると、入力側、出力側、何かを書いてから、デバッガで夜を過ごし、どこに行くのかを見てから、すべて投げ捨てて、もう一度やり直してください。シンプル。 – Ped7g