贺利坚老师汇编课程73笔记:键盘输入的处理过程
分类:
文章
•
2024-12-06 13:58:46
-
- 键盘的每一个键相当于一个开关,键盘中有一个芯片对键盘的每一个键的开关状态进行扫描
- 按下一个键的操作
- 开关接通,该芯片就产生了一个扫描码,扫描码说明按下的键在键盘的位置
- 扫描码被送入主板的相关接口芯片的寄存器中,该寄存器的端口地址为60H
- 松开按下的键时的操作
- 产生一个扫描码,扫描码说明了松开的键在键盘的位置
- 松开按键时产生的扫描码也被送入60H端口号中
- 扫描码——长度为一个字节的编码
- 按下一个单间产生的扫描码——通码,通码第七位为0
- 松开一个按键时产生的扫描码——断码,断码第七位为1
- g键的通码为22H断码为A2H
- 通码 + 80H = 断码
- 字符键,控制键,切换键
- 引发9号中断
- 键盘输入到达60H端口时,相关的芯片就会向CPU发出中断类型码为9的可屏蔽中断信息
- CPU检测到该中断信息后如果IF = 1则响应中断引发中断过程转去执行int 9中断例程
- 执行int 9中断例程
- 输入的字符键值如何保存
- 有 BIOS键盘缓冲区
- BIOS键盘缓冲区:是系统启动后,BIOS用于存放int 9中断例程所接收的键盘输入内存区
- 可以存储15个键盘输入,一个键盘输入用一个字单元存放,高位字节放扫描码,低位字节放字符码ASC
- 输入控制键和切换键
- BIOS提供中提供的处理键盘码输入的int 9中断例程处理工作
- 读出60H端口中的扫描码
- 根据扫描码分情况对待
- 如果是字符键的扫描码,将扫描码和它对应的字符码送如内存BIOS键盘缓冲区
- 如果是控制键(ctrl)和切换键(capslock)的扫描码则将其转变为状态字节(用二进制位记录控制键和切换键状态的字节)写入内存单元存储状态字节的单元
- 键盘输入的处理过程
- 检测中断码
- 1E送入到数据缓冲区
- 通过查表得到61放入数据缓冲区

- 送到键盘缓冲区