c - 程序集 16h BIOS 调用不起作用

标签 c assembly x86 keyboard bios

char getchar() {
    char a;
    __asm {
            int 16h
            mov [a], AL
    }
    return a;
}

我尝试从键盘获取用户输入,但它没有等待按键,而是返回奇怪的字符,而无需按键盘上的任何键。

最佳答案

如上所述here , 16H中断有多种服务,您必须使用ah寄存器选择其中之一。

读取按键的功能代码是0,因此您必须在int 16h之前异或ah, ah(将ah设置为零)。

关于c - 程序集 16h BIOS 调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51343898/

相关文章:

c++内联函数在GCC内联汇编中包装单个vmovups

linux - 使用 r8 寄存器作为循环计数器会导致无限循环 - 为什么?

android - 原生 Android 应用程序在 x86 上使用 SIGILL 崩溃

c - 如何将循环输出中的字符居中?

c - 交换 16 位值的前 8 位和后 8 位

c - 多连接Web服务器C

c++ - 在运行时将 char 数组转换为 String?

c - 从实模式切换到保护模式后远跳

gcc - 什么是扩展汇编器中的 "=qm"

assembly - 我的程序集冒泡排序有什么问题?