按键发声程序是许多人、许多书刊都介绍过的程序。任何一个学习过TSR程序的人大概都做过这个经典程序。但是,这些书刊介绍的按键发声程序大都有一个缺点:由于键盘中断在按键和放键时都能触发,因此按下键时喇叭响一声,放键时又响一声。这还叫“按键发声”吗?
  怎样解决这个问题呢?本人无意间发现,当键盘上有键按下时,60H号端口就有数据送入,这个数据就是所谓的键盘扫描码。扫描码的最高位为按键状态标志位:该位置0表示按键按下,置1即表示按键放开。
  那么,我们只要判断一下最高位是不是0,就可以做出真正的“按键发声”了,对吧?对,不过,判断最高位是不是0,运算量还有点大(有的初学者看到“&”就头晕^_^)。再想想,我们追求的是最简。
  聪明的你一定发现了,定义接受60H口读入的数据的变量为signed char,然后就直接判断它的正负……很好,就这样办吧!
  还是一句老话,看看我做的吧!注意,本程序最好用Huge模式编译,小生我用Small模式编译后运行,立即把Windows都Down掉了。