贺利坚老师汇编课程73笔记:键盘输入的处理过程


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