组装中是否有任何中断会立即读取输入(我的意思是无需等待输入等)。例如:在 java 中,keylistener 中有一个函数给出按下的键的 ascii 代码,而无需等待确认输入。我使用程序集 8086,因此在程序集 8086 中的答案更好。
问问题
3795 次
3 回答
1
如果您正在运行具有可用 BIOS 的东西,则可以使用 int 16H:
mov al, 0
int 16h
; now al contains ascii-code of the key hit
于 2013-05-11T23:22:10.527 回答
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 回答
0
汇编中有一个调用命令,它在某些汇编程序中工作并访问操作系统按键例程
调用 osrdch(操作系统读取字符)
不过,8086 的东西正在以一种很长的方式回归……1980 年?
如果 osrdch 对你有用,那很好,但在那时,如果你想要任何东西,你通常必须自己写,或者从当时在报刊亭周围漂浮的大量程序员杂志中挖掘出来
call "osrdch" ;o-s read character
call "oswrch" ;o-s write character
如果众神与你同在,那将把它放到 vdu 显示器上
上面提到的“int 16H”例程基本上就是它复制的内容,但是您的操作系统可能不允许中断
于 2013-05-13T00:15:51.873 回答