概述:
在编制键盘输入程序时常常要用到一个键的扫描码或ASC码,如用到 Foxpro 的 inkey() 函数,以及用到 BIOS 的 INT 16H时,但找一个编码表不太容易,有时候找到的编码表又不全,无法查到组合键的编码,本程序就是一个随时用来显示按键的ASC码及扫描码的程序,可以用 16 进制和 10 进制同时显示一个键按下和放开的扫描码,以及ASC码,同样也支持组合键。这里是编译好的可执行文件:scancode.com 在本程序中,查表的编程方法可用做参考,一般来说,如果程序有以下的结构:
... cmp al,value1 jz offset1 cmp al,value2 jz offset2 cmp al,value3 jz offset3 ...
且要比较的值很多时,可以考虑查表的方法。程序改为以下结构后,修改起来很容易,可读性也大大增强了,如果要继续添加分支时,只需在表中加上一项就行。
... table db value1,value2,value3 ... table1 dw offset1,offset2,offset3 ...
mov di,offset table mov cx,table的长度 repnz scasb jnz not_found
dec di sub di,offset table ;取出表的地址 mov si,di shl si,1 ;x2 add si,offset table1 jmp [si] ;跳转到表中的地址 ...
源程序:
; Scan code viewer ; Aug 3,1995 ; by Luo Yun Bin
.286 CODE SEGMENT ASSUME CS:CODE,DS:CODE
上一篇:如何检测CPU的主频
下一篇:用汇编计算圆周率
|