如何通过I / O端口直接访问键盘(在DOS下)?

时间:2012-10-22 19:24:15

标签: assembly input keyboard dos

我正在为DOS编写程序,我想获得键盘输入。问题是我不想使用BIOS或DOS获得输入。在不使用DOS或BIOS的情况下获取键盘输入的正确方法是什么?我的意思是使用I / O端口在最低级别的编程中获得键盘输入的方法是什么。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在端口0x60上执行inb指令才能从键盘读取扫描码。


static inline uint8_t inportb(uint16_t port)
{
    uint8_t ret;
    asm volatile ("inb %1, %0" : "=a" (ret) : "dN" (port));
    return ret;
}
scancode = inportb(0x60);

如果您想知道何时有新输入,您需要设置中断处理程序以侦听PS / 2中断或使用USB轮询,具体取决于您的键盘。