Assembly x86汇编int 16h刷新键盘缓冲区

Assembly x86汇编int 16h刷新键盘缓冲区,assembly,x86,bios,Assembly,X86,Bios,我正在写一个在引导扇区上工作的程序,并尝试使用BIOS中断16h 读取键盘输入,但我不知道如何刷新键盘缓冲区来读取 下一键输入 mov ax,0604h int 16h mov ah,11h int 16h cmp ah,1fh;for S jne nxt1 mov [dest],00000000b nxt1: 你在正确的轨道上 虽然我不太确定你在找什么,但我有个主意 中断int 16h 00h不仅从键盘缓冲区读取数据,还从缓冲区

我正在写一个在引导扇区上工作的程序,并尝试使用BIOS中断16h 读取键盘输入,但我不知道如何刷新键盘缓冲区来读取 下一键输入

    mov ax,0604h
    int 16h
    mov ah,11h
    int 16h
    cmp ah,1fh;for S
    jne nxt1
    mov [dest],00000000b
    nxt1:

你在正确的轨道上

虽然我不太确定你在找什么,但我有个主意

中断
int 16h 00h
不仅从键盘缓冲区读取数据,还从缓冲区中删除读取的键,并将ASCII格式存储在
AL
中。这样,缓冲区就不会继续填充


更多信息

我认为您不需要使用BIOS键盘输入清理任何缓冲区

以下程序接受任意数量的输入,并像文本编辑器一样将其打印到屏幕上:

start:

    /* Read to al. */
    mov $0x00, %ah
    int $0x16

    /* Print al. */
    mov $0x0E, %ah
    int $0x10

    jmp start

完整构建样板的工作示例。

有关BIOS中断列表,请参阅。通过读取缓冲区的内容来刷新缓冲区,直到缓冲区为空为止,不使用缓冲区。我总体上喜欢你的答案,但我注意到,你确实会将人们引导到你的github上,以此作为自我提升的一种形式。您确实内联了相关的代码片段,这是很好的,但是您确实应该披露您的答案中的github链接是您的站点。本文讨论了这个问题。因为你的答案中有一种模式可以促进你的回购,我建议至少在你的答案中添加一条说明,说明该链接指向你的个人github/wesbite/blog等@MichaelPetch感谢你的说明。我想很明显,这是我的网站,因为它在URL上包含我的用户名
cirosantilli
?我可以内联更多的东西,但这意味着大量的复制粘贴,如果有一天我发现有什么不对劲,几个答案将是错误的。此外,这些链接将永远有效,因为我总是使用SHA URL,并且永远不会删除回购协议。我真的只是为了让人们有一个完整的最小工作示例而链接,这是我自己在创建回购协议之前搜索的;-)我没有注意到你的许多原始答案是github是你的。当我看到一个大而长的URL时,我通常不会注意URL本身的内容。我认为SO常见问题非常清楚。我们不知道你是否会删除回购协议,或者github不会破产。我确实注意到,至少你在回答中发布了相关的片段,这样,如果github不再可用,或者你确实删除了回购协议,那么你的回答仍然是相关的。大多数情况下,你的答案实际上不需要github的链接,因为你提供了有用的内联位。你可以随时在Meta上提问,这样其他人是否觉得github URL足以识别它是你的。@MichaelPetch不用担心,如果你认为不清楚,其他人也不清楚,因此,从现在起,我将尝试编写“我的GitHub”;-)