在汇编中使用按键检测,如果按"方向键",会往寄存器中存入什么?

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:22:13

用INT 16H的AX=1000H扩展功能可以读取绝大多数的按键伪扫描码。
返回:AH=伪扫描码、AL=ASCII码(不少按键该值为0)
↑=4800H←=4B00H→=4D00H↓=5000H

你如果使用BIOS中断,则可从寄存器中取得键盘扫描码;如果使用DOS中断,则可取得扩展ASCII码。

给你提供一个通用性很强的子程序:
;=======================================
;键盘输入
;出: AH=0时: AL=ASCII码(字符码)
; AH=1时: AL=扩展ASCII码(功能键):
;AL=48h: 上移键
;AL=50h: 下移键
;AL=4bh: 左移键
;AL=4dh: 右移键
;AL=47h: Home
;AL=49h: PageUp
;AL=4Fh: End
;Al=51h: PageDn
;.........
;=======================================
kbInput proc near
mov ah,7
int 21h
mov ah,0
cmp al,0
jnz kbtest_1
mov ah,7
int 21h
mov ah,1
kbtest_1:
ret
kbInput endp
上述代码中的int 21h的07号调用,也可用int 16h的00号调用替代,但有好多功能键就不能使用了。