2013-05-11 72 views
0

是否有任何中斷程序集立即讀取輸入(我的意思是不等待輸入等)。 例如:在java中,keylistener中的一個函數提供按下按鍵的ascii代碼,而不必等待確認輸入。 我使用程序集8086工作,因此程序集8086中的答案更好。程序集立即獲取輸入

回答

1

如果您在使用一些與BIOS運行,你可以使用INT 16H:

mov al, 0 
int 16h 
; now al contains ascii-code of the key hit 

20.4 The Keyboard BIOS Interface

+0

有沒有一種簡單的方法來把它放在一個循環中,只做一些事情如果擊鍵與前一次不一樣? – 2015-12-08 22:18:21

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: 

德克

0

有一個呼叫命令,組裝,其作品在某些彙編器和訪問操作系統的按鍵程序

呼叫osrdch(操作系統讀取字符)

8086雖然東西是要回一一長串方式.. .. 1980?

如果osrdch工程,那麼你大可當時,如果你在所有你通常不得不自己編寫或挖掘出來的程序員雜誌上漂浮的巨大數量的想要什麼報紙經銷商早在那樣的日子

call "osrdch" ;o-s read character 

    call "oswrch" ;o-s write character 

如果神與你同在,這將plonk的它到VDU顯示

上面提到的「INT 16H」程序基本上就是它複製,但您的操作系統可能不允許中斷