0

我正在使用此代码从键盘获取输入,但我想不出一种方法来获取像“shift + a”= A 这样的组合键

keypressed:
     in al,60h
     test al,80h
     jnz keypressed
     and al,7fh
     mov bx,table
     dec al
     xlat
     cmp al,0
     je key
         call put_char
key:
     in al,60h
     test al,80h
     jz key
     jmp keypressed 

table db 0x01,"1234567890-=",0X0E,0x0F,'qwertyuiop[]',0x1C,0,"asdfghjkl;'",0,0,0,"zxcvbnm,./",0,0,0," ",0

注意 - putchar 是我制作的一个程序,它可以在 al 中打印任何内容。

4

2 回答 2

0

您必须跟踪 shift 键向下和键向上事件,并根据需要将 shift 状态应用于其他键事件。或者,只需使用 BIOS,它会自动为您完成所有工作。

于 2014-06-27T16:19:08.600 回答
-1

轮询端口以从键盘获取键的示例:

in al,64h       ; get the statusbyte from the keyboard
test al, 1      ; check if a byte is inside of the outputbuffer
jz short NOKEY
test al, 20h    ; check if the byte is coming from the PS2-mouse
jnz short NOKEY
in al, 60h      ; get the key from the outputbuffer
.....           ; <- place your code here
NOKEY:

短剑

于 2014-06-27T10:27:43.620 回答