目录 上一页 下一页 下一章

第6章 文字输出与键盘输入 -165-

数据,这些数据当然不能放在ROM中,因此BIOS程序就在中断向量表的上面开僻了一块空间专用于保存自己的数据,我们一般称其为BIOS数据区,这便是40H段的由来。本书的附录中列出BIOS数据区的详细内容,需要时大家可以查阅。

图6-13 按键处理流程
表6-5 16H中断的功能
功能号用途说明
00等待键盘输入字符AL=ASCII码
AH=按键扫描码
01从键盘缓冲区内读一个字符ZF=0:AL=ASCII码
AH=按键扫描码
ZF=1:缓冲区内无字符
02取键盘状态字低8位AL=键盘状态字低8位
  根据表6-5可知1号功能用于判断键盘缓冲区是否有字符可供读出,2号功能用于取得键盘状态字的低8位。这两个功能看上去好象不大常用,实际上1号功能还是十分有用的。请考虑编制这样一个程序:打开定时器发出10秒钟的声音(频率不限),在这十秒钟内若Esc键按下则关闭定时器并结束程序,否则10秒钟后停止发声并结束。
  解决这个问题已不能使用16H中断的0号功能了,因为这个功能在没有键按下时会循环等待,所以程序应用这个功能就不能完成10秒定时发声。怎样才能达到要求?我们可以设想如果能够在键盘的确有键按下时才调用16H中断的0号功能,而在无键按下时去完成定时工作,这样就可解决问题。这里就要用到16H中断的1号功能了。请看BEEP.ASM程序。
BEEP.ASM
code


main


segment
assume
org
proc
in


cs:code
100h
far
al,61h





;打开定时器发声

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章