【发布时间】:2023-03-31 14:50:01
【问题描述】:
我正在用 x86 汇编程序编写一个程序,以便在 DOS 下以 16 位实模式运行。
.model small
.stack 100h
.code
start:
mov dl, 4bh
loop1:
mov ah, 2h
int 21h
mov ah, 1h
int 16h
cmp al, 6bh
jne loop1
mov ah, 4ch
int 21h
end start
end
程序需要一直写“K”,当在键盘上按下“k”时程序应该停止。
一切正常,程序一直写“K”,当我在键盘上按“k”时,我的程序停止了,但是,当我按键盘上的另一个按钮(什么都不应该发生)时,当我按“k”按钮时之后,程序不会停止,而是一直打印“K”。
我认为这是因为这个其他按钮已填满缓冲区,我不知道如何重置它或从缓冲区中仅获取缓冲区的最后一部分,其中有最后按下按钮的代码。
【问题讨论】:
标签: assembly keyboard buffer dos x86-16