【新书推荐】4.3节 键盘扫描码

本文详细介绍了8086计算机中键盘扫描码的工作原理,包括字符键、功能键和控制键的通码和断码概念,以及scancode集、小键盘、附加键和功能键的扫描码表。这些内容对于理解X86汇编语言中键盘输入的处理至关重要,来源于《X86汇编语言基础教程》。
摘要由CSDN通过智能技术生成

本节内容:键盘扫描码。

键盘扫描码:8086计算机的键盘上的按键分为字符键、功能键和控制键。每一个按键都对应一个键盘扫描码。当按下按键时的扫描码称为通码,松开按键时的扫描码称为断码。如果按下的是字符键,则将其对应的一个字节的扫描码和一个字节的ASCII码存入键盘缓冲区。我们将在第十六章输入与输出中断中详细讲解。

4.3.1 键盘扫描码

键盘上的每一个键相当于一个开关,键盘中有一个芯片对键盘上的每一个键的开关状态进行扫描。

按下按键时,开关接通,该芯片就产生一个扫描码,并说明按下的键在键盘上的位置。扫描码被送入主板上相关接口芯片中的寄存器,端口地址为60h。

松开按键时也产生一个扫描码,扫描码说明松开的键在键盘上的位置。松开键时产生的扫描码也被送入60h端口中。

按下时产生的扫描码称为通码,松开时的扫描码称为断码。断码=通码+80h。

从60端口读出扫描码,并转化为相应的ASCII码或状态信息,并存储在内存指定的空间(键盘缓冲区或状态字节)中。从键盘缓冲区读取扫描码进入显存就可以在屏幕显示。或者直接写入文件。

scan code

扫描码集分为set 1、set 2 和 set 3。这里只介绍一般日常应用中的键盘码集 set 2。

基本 scan code:绝大多数为 1 byte。

扩展 scan code:由 e0e1 或 e2 引导。

特殊的 PrintScreen/SysRq 键:e0 2a e0 37

物殊的 Pause/Break 键:e1 1d 45 e1 9d c5

小键盘 scan code

小键盘中的 <home><Up><PgUp><Left><Right><End><Down><PgDn><Ins><Del> 由 NumLock 按下后再按得来。因此,会产生一个 <NumLock> mark 码后,再产生上述的mark通码。 释放 <NumLock> 产生一个 break断码。如表4-1所示。

附加键 scan code

         如表4-2所示。

功能键 scan code

         如表4-3所示。

主键盘 scan code

         如表4-4所示。若输入字符“ABCD”有两种方法:

●按下 <CapsLock> 键后,再输入 abcd 键,再按 <CapsLock> 键,产生一个 <CapsLock> 键 mark 和 break 码,然后依次是 abcd 的 mark 和 break 码, 最后是 <CapsLock> 的 mark 和 break 码。 

●按着 <L-shift> 或 <R-shift> 不放,再按 abcd 键,再放开 <L-shift> 或 <R-shift> 键

产生一个 <L-shift> 或 <R-shift> 键的 mark 码,然后依次是 abcd 的 mark 和 break 码,最后是一个 <L-shift> 或 <R-shift> 键的 break 码。

                                                                 

                                        表4-1 小键盘扫描码

                                            表4-2 附加键扫描码

                                                表4-3 功能键扫描码

                                                表4-4 主键盘扫描码

本文摘自编程达人系列教材《X86汇编语言基础教程》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值