zoukankan      html  css  js  c++  java
  • 键盘中断事件及其相关---小记

    对于键盘中断的介绍

    当我们在按下按键时,键盘会把按键的扫描码发送到主板的接口电路中,具体说就是端口60H。

    当60H收到扫描码,这时接口就会向CPU发出中断请求。这是一个可屏蔽中断。所以,当IF=1,

    并且CPU执行完当前指令后就会响应中断。也就是进入int 9中断服务程序。此时,程序将读取

    60H中的扫描码,并判断输入的按键是什么。

    对于这些状态字节,其是位于内存中的0:417H或0:418H位置

    所以,如果产生中断后想制止接下来的二次中断,可以进入状态字值置零处理:

    如ctrl键的检测:

     1 keyin:    
     2         MOV AH,02H       ;键盘状态
     3         INT 16H    
     4         AND AL,00000100B   ;;检测 Ctrl -- 位2
     5         cmp al,0
     6         JNE PRESS
     7         JMP keyin
     8         
     9 PRESS:
    10         mov ax,0           ;把 0:417H中的状态字节置零
    11         mov es,ax
    12         MOV byte ptr es:[417H],0


    ps:

    应用程序读取键盘缓冲区

    利用键盘控制应用程序主要有两种方式:

    1、直接从60H端口中读取键盘扫描码,在应用程序中分析键盘输入的是字符还是控制符、切换符等。

    2、利用BIOS提供的中断int 16H。

    下面列出键盘大部分ASCII码表

    八进制十六进制十进制字符八进制十六进制十进制字符
    00 00 0 nul 100 40 64 @
    01 01 1 soh 101 41 65 A
    02 02 2 stx 102 42 66 B
    03 03 3 etx 103 43 67 C
    04 04 4 eot 104 44 68 D
    05 05 5 enq 105 45 69 E
    06 06 6 ack 106 46 70 F
    07 07 7 bel 107 47 71 G
    10 08 8 bs 110 48 72 H
    11 09 9 ht 111 49 73 I
    12 0a 10 nl 112 4a 74 J
    13 0b 11 vt 113 4b 75 K
    14 0c 12 ff 114 4c 76 L
    15 0d 13 er 115 4d 77 M
    16 0e 14 so 116 4e 78 N
    17 0f 15 si 117 4f 79 O
    20 10 16 dle 120 50 80 P
    21 11 17 dc1 121 51 81 Q
    22 12 18 dc2 122 52 82 R
    23 13 19 dc3 123 53 83 S
    24 14 20 dc4 124 54 84 T
    25 15 21 nak 125 55 85 U
    26 16 22 syn 126 56 86 V
    27 17 23 etb 127 57 87 W
    30 18 24 can 130 58 88 X
    31 19 25 em 131 59 89 Y
    32 1a 26 sub 132 5a 90 Z
    33 1b 27 esc 133 5b 91 [
    34 1c 28 fs 134 5c 92
    35 1d 29 gs 135 5d 93 ]
    36 1e 30 re 136 5e 94 ^
    37 1f 31 us 137 5f 95 _
    40 20 32 sp 140 60 96 '
    41 21 33 ! 141 61 97 a
    42 22 34 " 142 62 98 b
    43 23 35 # 143 63 99 c
    44 24 36 $ 144 64 100 d
    45 25 37 % 145 65 101 e
    46 26 38 & 146 66 102 f
    47 27 39 ` 147 67 103 g
    50 28 40 ( 150 68 104 h
    51 29 41 ) 151 69 105 i
    52 2a 42 * 152 6a 106 j
    53 2b 43 + 153 6b 107 k
    54 2c 44 , 154 6c 108 l
    55 2d 45 - 155 6d 109 m
    56 2e 46 . 156 6e 110 n
    57 2f 47 / 157 6f 111 o
    60 30 48 0 160 70 112 p
    61 31 49 1 161 71 113 q
    62 32 50 2 162 72 114 r
    63 33 51 3 163 73 115 s
    64 34 52 4 164 74 116 t
    65 35 53 5 165 75 117 u
    66 36 54 6 166 76 118 v
    67 37 55 7 167 77 119 w
    70 38 56 8 170 78 120 x
    71 39 57 9 171 79 121 y
    72 3a 58 : 172 7a 122 z
    73 3b 59 ; 173 7b 123 {
    74 3c 60 < 174 7c 124 |
    75 3d 61 = 175 7d 125 }
    76 3e 62 > 176 7e 126 ~
    77 3f 63 ? 177 7f 127 del

    ASCII表

    ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符
    0 NUT 32 (space) 64 @ 96
    1 SOH 33 65 A 97 a
    2 STX 34 66 B 98 b
    3 ETX 35 # 67 C 99 c
    4 EOT 36 $ 68 D 100 d
    5 ENQ 37 % 69 E 101 e
    6 ACK 38 & 70 F 102 f
    7 BEL 39 , 71 G 103 g
    8 BS 40 ( 72 H 104 h
    9 HT 41 ) 73 I 105 i
    10 LF 42 * 74 J 106 j
    11 VT 43 + 75 K 107 k
    12 FF 44 , 76 L 108 l
    13 CR 45 - 77 M 109 m
    14 SO 46 . 78 N 110 n
    15 SI 47 / 79 O 111 o
    16 DLE 48 0 80 P 112 p
    17 DCI 49 1 81 Q 113 q
    18 DC2 50 2 82 R 114 r
    19 DC3 51 3 83 X 115 s
    20 DC4 52 4 84 T 116 t
    21 NAK 53 5 85 U 117 u
    22 SYN 54 6 86 V 118 v
    23 TB 55 7 87 W 119 w
    24 CAN 56 8 88 X 120 x
    25 EM 57 9 89 Y 121 y
    26 SUB 58 : 90 Z 122 z
    27 ESC 59 ; 91 [ 123 {
    28 FS 60 < 92 124 |
    29 GS 61 = 93 ] 125 }
    30 RS 62 > 94 ^ 126 ~
    31 US 63 ? 95 127 DEL
     
    NUL VT 垂直制表 SYN 空转同步
    SOH  标题开始 FF   走纸控制 ETB  信息组传送结束
    STX  正文开始 CR   回车 CAN  作废
    ETX  正文结束 SO   移位输出 EM   纸尽
    EOY  传输结束 SI    移位输入 SUB  换置
    ENQ  询问字符 DLE  空格 ESC  换码
    ACK  承认 DC1  设备控制1 FS   文字分隔符
    BEL  报警 DC2  设备控制2 GS   组分隔符
    BS   退一格 DC3  设备控制3 RS   记录分隔符
    HT   横向列表 DC4  设备控制4 US   单元分隔符
    LF   换行 NAK  否定 DEL  删除
     
    键盘常用ASCII码

    ESC键 VK_ESCAPE (27)

    回车键: VK_RETURN (13)

    TAB键: VK_TAB (9)

    Caps Lock键: VK_CAPITAL (20)

    Shift键: VK_SHIFT ($10)

    Ctrl键: VK_CONTROL (17)

    Alt键: VK_MENU (18)

    空格键: VK_SPACE ($20/32)

    退格键: VK_BACK (8)

    左徽标键: VK_LWIN (91)

    右徽标键: VK_LWIN (92)

    鼠标右键快捷键:VK_APPS (93)

    Insert键: VK_INSERT (45)

    Home键: VK_HOME (36)

    Page Up: VK_PRIOR (33) P

    ageDown: VK_NEXT (34)

    End键: VK_END (35)

    Delete键: VK_DELETE (46)

    方向键(←): VK_LEFT (37)

    方向键(↑): VK_UP (38)

    方向键(→): VK_RIGHT (39)

    方向键(↓): VK_DOWN (40)

    F1键: VK_F1 (112)

    F2键: VK_F2 (113)

    F3键: VK_F3 (114)

    F4键: VK_F4 (115)

    F5键: VK_F5 (116)

    F6键: VK_F6 (117)

    F7键: VK_F7 (118)

    F8键: VK_F8 (119)

    F9键: VK_F9 (120)

    F10键: VK_F10 (121)

    F11键: VK_F11 (122)

    F12键: VK_F12 (123)

    Num Lock键: VK_NUMLOCK (144)

    小键盘0: VK_NUMPAD0 (96)

    小键盘1: VK_NUMPAD0 (97)

    小键盘2: VK_NUMPAD0 (98)

    小键盘3: VK_NUMPAD0 (99)

    小键盘4: VK_NUMPAD0 (100)

    小键盘5: VK_NUMPAD0 (101)

    小键盘6: VK_NUMPAD0 (102)

    小键盘7: VK_NUMPAD0 (103)

    小键盘8: VK_NUMPAD0 (104)

    小键盘9: VK_NUMPAD0 (105)

    小键盘.: VK_DECIMAL (110)

    小键盘*: VK_MULTIPLY (106)

    小键盘+: VK_MULTIPLY (107)

    小键盘-: VK_SUBTRACT (109)

    小键盘/: VK_DIVIDE (111)

    Pause Break键: VK_PAUSE (19)

    Scroll Lock键: VK_SCROLL (145)

    另有链接键盘码表:单键扫描码,ascii,组合键码 :

                 http://wenku.baidu.com/link?url=8O_Rna2XtX1oReFqpQztzOE3QK8ke9XDnl-UIU2vibZO3Oeueq-PxAxzYdI0HkXlDMJDNlk72BjNH3dVNMplOVjmG6TLhBAYGPi6N4oEwZe

  • 相关阅读:
    Pretty girl,你一定要去旅行
    难受就哭,开心就笑
    你对你的大学生活满意吧
    [leetCode]575. 分糖果
    [leetCode]383.赎金信
    242. 有效的字母异位词
    [leetCode]538. 把二叉搜索树转换为累加树
    [leetCode]面试题 02.07. 链表相交
    [leetCode]206. 反转链表
    [leetCode]707. 设计链表
  • 原文地址:https://www.cnblogs.com/imwtr/p/4105404.html
Copyright © 2011-2022 走看看