-160- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
out_ax code |
int mov dec jnz mov int mov int pop ret endp ends end |
10h ax,dx ch outloop ax,0e0dh 10h al,0ah 10h ax main |
;输出一个数字 ;取回DX寄存器中的移位结果 ;循环计数减1 ;循环至OUTLOOP继续输出下一个数位 ;输出回车符 ;输出换行符 ;恢复AX寄存器 ;返回 |
||||||||||||||||||
这个程序不仅可以显示出按键的ASCII码,还可以显示出16H中断的0号功能在AH寄存器中返回的数据。运行这个程序,会发现AH寄存器中的数据与所按键的ASCII码好象并无关系,比如按下打字键盘上的数字"1"键,可以看到AX寄存器返回的数据是0231H,其中31H是按键的ASCII码;如果按住Shift键再按下数字"1"键,此时AX寄存器返回0221H,21H是"!"的ASCII码,而AH寄存器中的数据竟然没变;如果按下右边数字小键盘上的"1",就会看到AX寄存器中返回4F31H,31H仍是"1"的ASCII码,而AH寄存器中的数据却变成了4FH。 如果我们暂时给AH寄存器中的数据命名为"幻码"的话那么我们现在就可以总结出这样两条规律: (1)Shift键可以改变同一按键的ASCII码,但同一键的"幻码"固定不变; (2)分在不同键区的同名键具有相同的ASCII码,但具有不同的"幻码"。这个规律是否绝对,我们可以按下其它的键来检验,最后我们可以发现这个规律对于大多数键来讲是正确的,个别的一些键无此规律。 那么就"幻码"本身而言,各个键所对应的"幻码"有没有什么规律呢?我们再次运行这个程序,然后由"1"至"0"顺次按下打字键区中的数字键,再由左至右顺次按下第一行字母键,看看是否得到了下面的结果: |
|||||||||||||||||||||
![]() |
|||||||||||||||||||||
这个试验揭示出"幻码"的这样一个规律:每个键对应的"幻码"与这个键在键盘上的位置有一定的关系。这个规律从何而来? PC机的祖先--IBM PC/XT配备了一个83键的标准键盘,现在这种键盘己然绝迹。我们通常使用的键盘都是101键的。这种键盘上每个键对应的"幻码"可在表6-3查出: 键盘的结构可分为两大部分:按键开关和逻辑控制电路。每个键都是一个开关,都具有"通"和"断"两种状态。当键盘通电后,控制电路就会按预定顺序轮流查询每个键的状态, |
|||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |