实模式程序集获取键盘输入

Real Mode Assembly Get Keyboard Input

在实模式汇编中,我使用了这段代码:

mov ah, 0h int 0x16

等待键盘输入。我知道当按下某个键时,有关我按下的键的信息存储在 ah 和 al 寄存器中。例如,当我按下 ENTER 时,0x0D 将存储在 al 寄存器中。如果我按退格键,那将是 0x08。但是我只知道这两个键。

是否有所有键盘键的列表?例如,当我按下 'a' 时,al/ah 的值会是多少? (ASCII 表没有这方面的信息。)

来自RBIL

KEYBOARD - GET KEYSTROKE

AH = 00h

Return:
AH = BIOS scan code
AL = ASCII character

ah 将包含键盘扫描码和 al ASCII 字符。

每个键都有两个扫描码(按下并释放)。它由键盘控制器返回,进一步的抽象层提供从扫描码到特定字符集(如 ASCII)的映射,因此用户可以对字符集值进行操作。
可以找到扫描码列表 here(感谢@MichaelPetch)。然而,扫描码随着IBM PC的发展而发展,因此存在多组扫描码,但它们是部分兼容的。如果您使用扫描码,请注意您使用的扫描码类型。

对于以后的问题,请始终先查看 Ralph Brown's Interrupt List (RBIL) - 好东西。