Сборка 8086 Флаг сдвига клавиатуры всегда возвращает 0 - PullRequest
0 голосов
/ 02 мая 2018

так недавно я попытался сделать кейлоггер для моего школьного проекта. (Я изменил int9h на свой собственный код, чтобы я мог получить ключи без прерывания буфера клавиатуры или других программ). Теперь при использовании обычных клавиш (просто обычные коды BIOS) все работает, но у меня есть проблема с состоянием флага смены клавиатуры. Я попытался получить байт, используя int16h (ах = 2) и прямо из памяти, и я попытался распечатать его, чтобы увидеть, что не так. Байт всегда равен 0 независимо от того, какую клавишу я нажимаю (Lshift, Rshift, Caps Lock и т. Д.).

Примечание: мы используем 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

Кто-нибудь может мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...