我的目标是使用Int 16指令使用箭头键在程序中上下移动,直到我的用户决定按下转义键。我是否在循环中使用以下代码读取多个按键并在结尾处添加终止条件或者是否存在我遗漏的内容?
Mov ah,00
int 16
答案 0 :(得分:2)
Mov ah,00 int 16
汇编语言编程需要您精确
BIOS键盘功能位于int 16h
。这是十进制的 22 ,而不是你写的 16 !可能不是什么大问题,但它是成功与失败之间的区别。
MainLoop:
mov ah, 01h ;BIOS.TestKey
int 16h
jz StuffToDoRegardlessOfAnyKey
mov ah, 00h ;BIOS.GetKey
int 16h
cmp al, 27 ;Is it ESCAPE ?
jne ProcessOtherKey
ProcessEscapeKey:
...
...
ProcessOtherKey:
...
...
jmp MainLoop
StuffToDoRegardlessOfAnyKey:
...
...
jmp MainLoop
这是一个解决使用键盘导航问题的骨架程序。在 MainLoop 的每次迭代中,如果有挂起的密钥,它首先使用BIOS键盘功能01h进行测试。