键盘中断事件及其相关---小记

2018-09-03 18:47:44 浏览数 (1)

对于键盘中断的介绍

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

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

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

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

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

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

如ctrl键的检测:

代码语言:javascript复制
 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

0 人点赞