入力をすぐに読み取るアセンブリに中断はありますか (つまり、入力などを待たずに)。例: Java では、keylistener に関数があり、入力の確認を待たずに、押されたキーの ascii コードを提供します。私はアセンブリ 8086 で作業しているので、アセンブリ 8086 での回答の方が優れています。
質問する
3795 次
3 に答える
1
ソフトウェア割り込みを使用せずに、独自の ASCII テーブルを使用して、キーボードのキーを押したときに ASCII を取得する例:
KEYTAB DB 0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D
DB 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1E,0x1F
DB 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2B,0x2C,0x2D,0x2E,0x2F
DB 0x30,0x31,0x32,0x33,0x34,0x35,0x39
DB 0x56
tablen = ($-KEYTAB)
ASCII DB "1234567890ß'" ; table with language-specific letters
DB "qwertzuiopü+as"
DB "dfghjklöä^#yxcv"
DB "bnm,.- "
DB "<"
asclen = ($-ASCII)
;--------------------------------------------------
cli
in al,0x64 ; get status
test al,1 ; output buffer empty?
jz short NOKEY
test al,0x20 ; PS2-mouse byte?
jnz short NOKEY
in al,0x60 ; get one byte from keyboard
sti
; using an own ASCII-table for to convert the keyboardcodes in AL to ASCII
NOKEY:
ダーク
于 2013-05-12T09:02:31.050 に答える
1
BIOS が利用可能なもので実行している場合は、int 16H を使用できます。
mov al, 0
int 16h
; now al contains ascii-code of the key hit
20.4 キーボード BIOS インターフェイスを参照してください。
于 2013-05-11T23:22:10.527 に答える