912BIOS键盘中断 16H号中断是BIOS提供给用户程序使用的一个软件中断, 以INT16H指令调用,提供基本的键盘服务,包括读键、判 断有无普通键按下、读取控制键的状态等子功能。 1.0号子功能—读普通键 如果键盘缓冲区不空,则从缓冲区的环型队列首部取走 个按键,把按键的扫描码放到AH中,ASCI码放到AL中 作为出口参数; 如果键盘缓冲区是空的,则等待有效按键输入
9.1.2 BIOS键盘中断 16H号中断是BIOS提供给用户程序使用的一个软件中断, 以INT 16H指令调用,提供基本的键盘服务,包括读键、判 断有无普通键按下、读取控制键的状态等子功能。 1.0号子功能──读普通键 如果键盘缓冲区不空,则从缓冲区的环型队列首部取走 一个按键,把按键的扫描码放到AH中,ASCII码放到AL中 作为出口参数; 如果键盘缓冲区是空的,则等待有效按键输入
2.1号子功能—不改变缓冲区的读键 当键盘缓冲区中还存放有没取走的有效按键时,出口参 数中ZF=0,AX=扫描码与ASCI码。 如果键盘缓冲区已空,则ZF=1表示无键可读。 1号子功能与0号的差别。 首先,在缓冲区为空时,0号子功能将等待按键,1号子 功能则不等待,而是以ZF置1表示(这是很多电脑游戏软件 典型的读键方式)。 其次,如果缓冲区不空,0号子功能会取走该键,而1号 子功能并不取走,只把它复制到AX中
2.1号子功能──不改变缓冲区的读键 当键盘缓冲区中还存放有没取走的有效按键时,出口参 数中ZF=0,AX=扫描码与ASCII码。 如果键盘缓冲区已空,则ZF=1表示无键可读。 1号子功能与0号的差别。 首先,在缓冲区为空时,0号子功能将等待按键,1号子 功能则不等待,而是以ZF置1表示(这是很多电脑游戏软件 典型的读键方式)。 其次,如果缓冲区不空,0号子功能会取走该键,而1号 子功能并不取走,只把它复制到AX中
3.2号子功能——读控制键状态 直接从BIOS数据区中复制出键盘状态字节的值,放到 AL中作为出口参数。 4.10H号子功能——读键并清除键盘缓冲区 读键的情况与0号子功能完全相同,10H号子功能在读 完键后还会清除键盘缓冲区中剩余的所有按键数据
3.2号子功能──读控制键状态 直接从BIOS数据区中复制出键盘状态字节的值,放到 AL中作为出口参数。 4.10H号子功能──读键并清除键盘缓冲区 读键的情况与0号子功能完全相同,10H号子功能在读 完键后还会清除键盘缓冲区中剩余的所有按键数据
913DOS的输入子功能 DOS提供的输入子功能见P320。 1.7号子功能—无回显输入 直接调用前面所说的16H号中断的0号子功能。 2.8号子功能—无回显输入 7号非常接近,只是对按键增加了CtrH+ Break的处理。 3.0AH号子功能—输入字符串(P321) 读入一串字符并存入用户定义的缓冲区中
9.1.3 DOS的输入子功能 DOS提供的输入子功能见P320。 1.7号子功能──无回显输入 直接调用前面所说的16H号中断的0号子功能。 2.8号子功能──无回显输入 7号非常接近,只是对按键增加了Ctrl+Break的处理。 3.0AH号子功能──输入字符串(P321) 读入一串字符并存入用户定义的缓冲区中
4.0BH号子功能—判断按键状态 用于判断键盘缓冲区是否为空,出口参数是: 当键盘缓冲区不空时,AL=0FFH 当键盘缓冲区为空时,AL≠0FFH 5.0CH号子功能—清除键盘缓冲区后再读键入口参数: AH=oCHa AL=清除缓冲区后再执行的功能号,可以是1、7、8。 出口参数: 按AL中的功能号,与DOS的3个子功能出口参数对应相同。 先把键盘缓冲区清空,然后再根据AL中的值,执行DOS 的1号、7号或8号子功能
4.0BH号子功能──判断按键状态 用于判断键盘缓冲区是否为空,出口参数是: 当键盘缓冲区不空时,AL=0FFH; 当键盘缓冲区为空时,AL≠0FFH。 5.0CH号子功能──清除键盘缓冲区后再读键入口参数: AH=0CH; AL=清除缓冲区后再执行的功能号,可以是1、7、8。 出口参数: 按AL中的功能号,与DOS的3个子功能出口参数对应相同。 先把键盘缓冲区清空,然后再根据AL中的值,执行DOS 的1号、7号或8号子功能