Я застрял в этой вещи, я хочу посмотреть, была ли нажата правая кнопка переключения, поэтому у меня есть код ассамблера:
mov ah,2
int 16h ;calling INT 16,2 - Read Keyboard Flags interrupt
mov ah,10000000b
shl al,7
and al,10000000b
cmp al,ah ;check if first bit is 1
je rshift
jmp final
rshift:
mov ah,9
lea dx,rsh ;rsh is a string that says that "right shift button has been pressed"
int 21h
jmp final
final: ; quit program
mov ax,4c00h
int 21h
почему он не работает? Я думаю, проблема в том, что int 16,2 не работает должным образом, если так, то почему?
вот что должен делать INT 16,2:
AH = 02
on return:
AL = BIOS keyboard flags (located in BIOS Data Area 40:17)
|7|6|5|4|3|2|1|0| AL or BIOS Data Area 40:17
| | | | | | | `---- right shift key depressed
| | | | | | `----- left shift key depressed
| | | | | `------ CTRL key depressed
| | | | `------- ALT key depressed
| | | `-------- scroll-lock is active
| | `--------- num-lock is active
| `---------- caps-lock is active
`----------- insert is active
Я никогда не вижу сообщения, я смотрел регистр AL в отладке, и он, кажется, не меняется после вызова INT 16,2. работа с тасм