资源描述:
《获得键盘扫描码》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、获得键盘扫描码~教育资源库 概述: 在编制键盘输入程序时常常要用到一个键的扫描码或ASC码,如用到Foxpro的inkey()函数,以及用到BIOS的INT16H时,但找一个编码表不太容易,有时候找到的编码表又不全,无法查到组合键的编码,本程序就是一个随时用来显示按键的ASC码及扫描码的程序,可以用16进制和10进制同时显示一个键按下和放开的扫描码,以及ASC码,同样也支持组合键。这里是编译好的可执行文件:scancode. 在本程序中,查表的编程方法可用做参考,一般来说,如果程序有以下的结构: ... cmp al,value1
2、 jz offset1 cmp al,value2 jz offset2 cmp al,value3 jz offset3 ... 且要比较的值很多时,可以考虑查表的方法。程序改为以下结构后,修改起来很容易,可读性也大大增强了,如果要继续添加分支时,只需在表中加上一项就行。 ...table db value1,value2,value3...table1dov di,offsettable mov cx,table的长度 repnz scasb jnz not_found
3、 dec di sub di,offsettable ;取出表的地址 mov si,di shl si,1 ;x2 add si,offsettable1 jmp [si] ;跳转到表中的地址 ... 源程序:; Scancodeviep installKEY_BUFF DB ? ;INT9H中按下一个键产生的扫描码KEY_BUFF1DB ? ;INT9H中松开一个键产生的扫描码AAH DB ?AAL DB ?D_C
4、OPYRIGHT DB <<ScanCodevie,_end,pgu,pgd,up,do;特殊键的说明字符串f1 db 'F1',0 ;f2 db 飓下一页友情提醒:,特别!;F2',0f3 db 'F3',0f4 db 'F4',0f5 db 'F5',0f6 db 'F6',0f7 db 'F7',0f8 db 'F8',0f9
5、 db 'F9',0f10 db 'F10',0f11 db 'F11',0f12 db 'F12',0bks db 'BackSpace',0tab db 'Table',0cap db 'CapsLock',0lsh db 'LeftShift',0ctr db 'Ctrl',0alt db 'Alt',0rsh db
6、 'RightShift',0ent db 'Enter',0spa db 'Space',0_ins db 'Insert',0del db 'Delete',0hom db 'Home',0_end db 'End',0pgu db 'PageUp',0pgd db 'PageDo db 'NumLock',0_esc db '
7、;Esc',0PRINT_KEY PROC mov bl,key_buff ;取扫描码到BL xor bh,bh mov al,key_table[bx] ;查扫描码表 cmp al,'?' ;如果为?则继续查特殊码表 jz pk1pk0: call prt_to_scr retpk1: mov al,key_buff ;在特殊码表内扫描 mov di,offsetkey_table1 mov cx,offs
8、etkey_table1_end-offsetkey_table1 repnz scasb jnz pk0 dec