【问题标题】:Real Mode Assembly Get Keyboard Input实模式汇编获取键盘输入
【发布时间】:2017-04-04 01:03:48
【问题描述】:

在实模式汇编中,我使用以下代码:

mov ah, 0h int 0x16

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

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

【问题讨论】:

  • 二十年前我遇到了同样的问题,所以我写了一个实用程序 OPIN.COM,当按下任何键或组合键时,它将显示从 int 0x16 返回的信息。 vitsoft.info/opin.htm

标签: assembly keyboard bios real-mode


【解决方案1】:

来自RBIL

键盘 - 获取按键

AH = 00h

返回:
AH = BIOS 扫描码
AL = ASCII 字符

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

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

对于未来的问题,请始终先查看Ralph Brown's Interrupt List (RBIL) - 那里有好东西。

【讨论】:

    猜你喜欢
    • 2013-01-27
    • 2010-12-15
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多