-164- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
这一小段程序重新设定了队列指针并在缓冲区中填入了小写字母"r"和一个回车符,因此当这个程序结束后DEBUG就会取到这个"r"并把它当做命令来执行,于是屏幕上显示出所有寄存器的值。 相对于键盘缓冲区而言,"键盘状态字"要简单得多,这是一个16位的数据,位于逻辑地址0040H:0017H处,各个位为1时的定义如图6-12所示: |
|||||||||||||||||||||
![]() 图6-12 键盘状态字 |
|||||||||||||||||||||
键盘状态字的变化可以用DEBUG来观察: | |||||||||||||||||||||
C:\ASM\>DEBUG[Enter] | |||||||||||||||||||||
-d40:17 18[Enter] | |||||||||||||||||||||
0040:0010 | 00-00 | .. | |||||||||||||||||||
(按下Caps Lock) | |||||||||||||||||||||
-d40:17 18[Enter] | |||||||||||||||||||||
0040:0010 | 40-00 | @. | |||||||||||||||||||
(再按下Scroll Lock) | |||||||||||||||||||||
-d40:17 18[Enter] | |||||||||||||||||||||
0040:0010 | 50-00 | P. | |||||||||||||||||||
(再按下Insert) | |||||||||||||||||||||
-d40:17 18[Enter] | |||||||||||||||||||||
0040:0010 | D0-00 | .. | |||||||||||||||||||
-d40:17 18[Enter] | (按住左Shift不放,再按下Enter键) | ||||||||||||||||||||
0040:0010 | D2-00 | .. | |||||||||||||||||||
由实验可知键盘状态字的Bit0-Bit3位反映了开关键的状态,而Bit4-Bit15是动态的,只在各键按下时设置,放开键后便重新发复位了。 至此我们已经把键盘输入的情况大概讨论了一便,可以看到一个键由按下直至被应用程序收到大致经过了如图6-13所示的一个过程: 通过这一节的学习,大家还可能会发现这样一个现象:我们所关心的一些重要的系统数据好象都放在了0040H段中,前面我们讨论定时的时候也提到过系统时钟计数值也位于40H段内,那么40H段究竟有什么不寻常的地方呢? 其实40H段并没有什么不寻常之处,我们知道在启动PC时CPU首先执行ROM内的程序,这段程序用于完成系统的检测以及DOS的启动。这段程序运行时总要保存一些检测结果和一些临时 |
|||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |