程序集8086键盘移位标志始终返回0

时间:2018-05-02 09:31:53

标签: assembly interrupt dosbox keyboardinterrupt

所以最近我试图为我的学校项目制作一个键盘记录器。 (我将int9h更改为我自己的代码,这样我就可以在不中断键盘缓冲区或其他程序的情况下获取密钥)。现在当使用常规键(只是简单的BIOS代码)时,一切正常,但我的键盘移位标志状态有问题。 我试图使用int16h(ah = 2)并直接从内存获取字节,我尝试打印它以查看错误。无论我按哪个键(Lshift,Rshift,Caps lock等),该字节始终为0。

注意:我们使用DOSbox来运行我们的程序

这是我的检查:

shiftRight_check: 
mov ah, 2
int 16h
test al, 1
jz shiftLeft_check
jmp shift_keys

shiftLeft_check: 
mov ah, 2
int 16h
test al, 2
jz regular_keys
jmp shift_keys

从我看到的字节应该如下:

 0:  01H alpha-shift (right side) DOWN
 1:  02H alpha-shift (left side) DOWN
 2:  04H Ctrl-shift (either side) DOWN
 3:  08H Alt-shift  (either side) DOWN
 4:  10H ScrollLock state
 5:  20H NumLock state
 6:  40H CapsLock state
 7:  80H Insert state

任何人都可以帮助我吗?

0 个答案:

没有答案