0

入力をすぐに読み取るアセンブリに中断はありますか (つまり、入力などを待たずに)。例: Java では、keylistener に関数があり、入力の確認を待たずに、押されたキーの ascii コードを提供します。私はアセンブリ 8086 で作業しているので、アセンブリ 8086 での回答の方が優れています。

4

3 に答える 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 に答える