Пернетақтаны басқару

Автор работы: Пользователь скрыл имя, 20 Декабря 2011 в 14:11, курсовая работа

Описание

Жүйелік платада орналасқан А микросхемасының интерфейсына пернетақтаның әрбір пернесін басқанда скан-код шығарылады. Скан-код дегеніміз бір байтты сан, кіші 7 биті әрбір пернеге меншіктелген идентификациялық номер, АТ дан басқа барлық машиналарда үлкен биттің коды перненің басылғанын (бит=1,басу коды) немесе жіберілгенін көрсетеді (бит=0,жіерілді).

Содержание

Кіріспе...................................................................................
1 Негізгі бөлім..........................................................................
1.1 Пернетақтаны басқару...............................................................
1.2 Пернетақта буферін тазалау.........................................................
1.3 Буфердегі символдарды тексеру...................................................
1.4 Символ енгізілуін күту және оны экранға бейнелеу.................
1.5 Экранда перне басылуы мен жаңғырықты күту.........................
1.6 Символдарды күтусіз қабылдау....................................................
1.7 Символдар жолы ашу.................................................................
1.8 Пернетақтадан процедураның жазылуын енгізу.........................
1.9 Пернетақта үзілісін қайта бағдарламалау.................................
1.10 Скан-кодтың қосалқы кестесі...................................................
1.11 ASCII кодынын қосымша кестесі.............................................
Қорытынды ...........................................................................

Работа состоит из  1 файл

Жанерке.doc

— 529.50 Кб (Скачать документ)
 

; _  _  _  _  _бағдарлама басында үзіліс орнатамыз

 

CLI   ;үзіліске шек қою
PUSH DS ;регистрды сақтау
MOV AX,SEG NEW_KEYBOARD ; DS: DX сілтеме жасау керек
MOV DS,AX ;өңдеу процедурасына
MOV DX,OFFESET NEW_KEYBOARD ;үзіліске
MOV AL,9 ;үзіліс векторы номері
MOV AH,25H ;DOS функциясының номері
INT 21H ;үзіліс векторын ауыстырамыз
POP DS ;регистрды қалпына келтіру
STI   ;үзілісті іске қосу
 

; _  _  _  _  _пернетақта үзілісі 

NEW_KEYBOARD PROG FAR ;барлық өзгерісті сақтау
  PUSH AX ;регистрлер
  PUSH BX ;
  PUSH CX ;
  PUSH DI ;
  PUSH ES ;
 

; _  _  _  _  _скан-кодты алып растау сигналын жібереміз 

IN AL,60H ;А портынан скан-код аламыз
MOV AH,AL ;көшірмесін АН-қа орналастырамыз
PUSH AX ;скан-кодты сақтаймыз
IN AL,61H ;В портының жағдайын оқимыз
OR AL,10000000B ;7 битін орнатамын
OUT 61H,AL ;өзгерген байтты портқа жібереміз
AND AL,01111111B ; 7 битін шығарамыз
OUT 61H,AL ; В портының жағдайын қайтарамыз
 

; _  _  _  _  _ES BIOS мәліметтер облысына нұсқайды 

MOV AX,40H ; сегментті орнатамыз
MOV ES,AX ;
POP AX ;скан-кодты стектен қайтарамыз
 

; _  _  _  _  _жылжу пернесін тексеру 

  CMP AL,42 ;сол жақ жылжу басылған ба?
  JNE KEY_UP ;жоқ-келесіні қараймыз
  MOV BL,1 ;иә-бит статусын өзгертеміз
  OR ES:[17H],BL ;регистр статусын өзгертеміз
  JMP OUIT ;процедурадан шығу
KEY_UP CMP AL,170 ;сол жақ жылжу жіберілді ме?
  JNE NEXTKEY ;жоқ- келесіні қараймыз
  MOV BL,11111110B ;иә-бит статусын өзгертеміз
  AND ES:[17H],BL ; регистр статусын өзгертеміз
  JMP OUIT ; процедурадан шығу
NEXTKEY     ;басқа қайтақосқыштарды қарау
 

; _  _  _  _  _бұл символды перне-скан-кодты интерпретациялайды 

  TEST AL,1000000B ; пернені жіберу коды ма?
  JNZ QUIT ;иә-процедурадан шығу
  MOV BL,ES:[17H] ;әйтпесе байт статусын аламыз
  TEST BL,0000011B ; жылжу перенсі басылған ба?
  JZ CONVERT_CODE ;жоқ-ары қарай жүреміз
  ADD AL,100 ;иә-онда бас әріп
CONVERT_CODE MOV BX,OFFEST TABLE ; кестені дайындаймыз
  XLAT TABLE ;скан-кодты ASCII-ға өзгертеміз
  CMP AL,0 ; 0 қайтарылды ма?
  JE QUIT ;иә-шығу
 

; _  _  _  _  _перне коды дайын, пернетақта буферінің жадысын тексереміз 

  MOV BX,1AH ;нұсқағыш сілтемесі (басына)
  MOV CX,ES:[BX] ; онын мәнін аламыз
  MOV DI, ES:[BX]+2 ;нұсқағыштың соңын аламыз
  CMP CX,60 ; нұсқағыш буфердің басында ма?
  JE HIGH_END ;иә-арнайы жағдайғакөшеміз
  INC CX ;нұсқағыш басын үлкейтеміз
  INC CX ; 2-ге
  CMP CX,DI ;нұсқағыш соңымен салыстырамыз
  JE QUIT ;егер тең болса,буфер толы
  JMP GO_AHEAD ;әйтпесе символ қоямыз
HIGH_END CMP DI,30 ;арнайы жағдайды тексеру
  JE OUIT ;егер буфер толы болса,шығу
 
 

; _  _  _  _  _буфертолы болмаса,оған символ қоямыз 

GO_AHEAD MOV ES:[DL],AL ;символды соңғы позицияға орналастырамыз
  CMP DI,60 ; нұсқағыш буфер соңында ма?
  JNE NO_WRAP ;жоқ-2-ні қосамыз
  MOV DI,28 ;әйтпесе нұсқағыш соңы 28+2
NO_WRAP ADD DI,2 ;соңының жаңа мәнін аламыз
  MOV ES:[BX]+2,DI ;мәліметтер облысына жібереміз
 

; _  _  _  _  _үзілістің соңы 

QUIT POP ES ;өгерісті қалпына келтіру
  POP DI ;регистрлер
  POP CX ;
  POP BX ;
  POP AX ;
  MOV AL,20H ; соңы туралы  сигнал
  OUT 20H,AL ; аппараттық үзілісте
  IRET   ; үзілістен қайту
NEW_KEYBOARD END P    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

1.10. Скан-кодтың қосалқы кестесі 

Перне Басу коды Перне Басу коды Перне Басу коды
«1» 2 «T» 20 «L» 38
«2» 3 «Y» 21 «;» 39
«3» 4 «U» 22 «’» 40
«4» 5 «I» 23 «”» 41
«5» 6 «O» 24 «\» 43
«6» 7 «P» 25 «Z» 44
«7» 8 «[» 26 «X» 45
«8» 9 «]» 27 «C» 46
«9» 10 «A» 30 «V» 47
«0» 11 «S» 31 «B» 48
«-» 12 «D» 32 «N» 49
«=» 13 «F» 33 «M» 50
«Q» 16 «G» 34 «,» 51
«W» 17 «H» 35 «.» 52
«E» 18 «J» 36 «/» 53
«R» 19 «K» 37 пробел 57
 
 

Басқару пернелері 

Esc-1 Ctrl-29 Alt-56
BackSpace-14 Left shift-42 CapsLock-58
Tab-15 Right shift-42 NumLock-58
Enter-28 PtrSc-55 ScrollLock-70
 
 
 
 
 
 
 

Функционалды  пернелер 

F1-59 F5-63 F9-67
F2-60 F6-64 F10-68
F3-61 F7-65  
F4-62 F8-66  
 

Қосымша пернетақта пернелері 

«7»-71 «5»-76 «3»-81
«8»-72 «6»-77 «0»-82
«9»-73 «+»-78 «.»-83
«-»-74 «1»-79 Sys Req-132(АТ да ғана)
«4»-75 «2»-80 мнимая-55(PCjr)
 
 

1.11. ASCII кодынын қосымша кестесі 

ASCII-дің 1 ден 255-ке дейінгі коды пернетақтадан енгізіледі, Alt пернесін басып тұрып енгізсе,пернені босатқанда кодтар енеді. 

Символ  10-дық 16-лық 2-лік Символ 10-дық 16-лық 2-лік
(Null) 0 00 00000000 0 48 30 00110000
  1 01 00000001 1 49 31 00110001
  2 02 00000010 2 50 32 00110010
  3 03 00000011 3 51 33 00110011
  4 04 00000100 4 52 34 00110100
  5 05 00000101 5 53 35 00110101
  6 06 00000110 6 54 36 00110110
  7 07 00000111 7 55 37 00110111
  8 08 00001000 8 56 38 00111000
  9 09 00001001 9 57 39 00111001
  10 0A 00001010 : 58 3A 00111010
  11 0B 00001011 ; 59 3B 00111011
  12 0C 00001100 < 60 3C 00111100
  13 0D 00001101 = 61 3D 00111101
  14 0E 00001110 > 62 3E 00111110
  15 0F 00001111 ? 63 3F 00111111
  16 10 00010000 @ 64 40 01000000
  17 11 00010001 A 65 41 01000001
  18 12 00010010 B 66 42 01000010
  19 13 00010011 C 67 43 01000011
  20 14 00010100 D 68 44 01000100
  21 15 00010101 E 69 45 01000101
  22 16 00010110 F 70 46 01000110
  23 17 00010111 G 71 47 01000111
  24 18 00011000 H 72 48 01001000
  25 19 00011001 I 73 49 01001001
  26 1A 00011010 J 74 4A 01001010
  27 1B 00011011 K 75 4B 01001011
  28 1C 00011100 L 76 4C 01001100
  29 1D 00011001 M 77 4D 01001101
  30 1E 00011110 N 78 4E 010011110
  31 1F 00011111 O 79 4F 01001111
Пробел  32 20 00100000 P 80 50 01010000
! 33 21 00100001 Q 81 51 01010001
34 22 00100010 R 82 52 01010010
# 35 23 00100011 S 83 53 01010011
$ 36 24 00100100 T 84 54 01010100
% 37 25 00100101 U 85 55 01010101
& 38 26 00100110 V 86 56 01010110
39 27 00100111 W 87 57 0100111
( 40 28 00101000 X 88 58 01011000
) 41 29 00101001 Y 89 59 01011001
* 42 2A 00101010 Z 90 5A 01011010
+ 43 2B 00101011 [ 91 5B 01011011
44 2C 0010100 \ 92 5C 01011100
- 45 2D 00101101 ] 93 5D 01011101
. 46 2E 00101110 ^ 94 5E 0101110
/ 47 2F 00101111 _ 95 5F 01011111
Символ  10-дық 16-лық 2-лік Символ 10-дық 16-лық 2-лік
. 96 60 01100000 Щ 153 99 10011001
a 97 61 01100001 Ъ 154 9A 10011010
b 98 62 01100010 Ы 155 9B 10011011
c 99 63 01100011 Ь 156 9C 10011100
d 100 64 01100100 Э 157 9D 10011101
e 101 65 01100101 Ю 158 9E 10011110
f 102 66 01100110 Я 159 9F 10011111
g 103 67 01100111 а 160 A0 10111111
h 104 68 01101000 б 161 A1 10100001
i 105 69 01101001 в 162 A2 10100010
j 106 6A 01101010 г 163 A3 10100011
k 107 6B 01101011 д 164 A4 10100100
l 108 6C 01101100 ж 165 A5 10100101
m 109 6D 01101101 з 166 A6 10100110
n 110 6E 01101110 и 167 A7 10100111
o 111 6F 01101111 й 168 A8 10101000
p 112 70 01110000 к 169 A9 10101001
q 113 71 01110010 л 170 AA 01001010
r 114 72 01110010 м 171 AB 10101011
s 115 73 01110011 н 172 AC 10101100
t 116 74 01110100 о 173 AD 10101101
u 117 75 01110101 п 174 AE 10101110
v 118 76 01110110 - 175 AF 10101111
w 119 77 01110111 - 176 B0 10110000
x 120 78 01111000 - 177 B1 10110001
y 121 79 01111001 ¦ 178 B2 10110010
z 122 7A 01111010 + 179 B3 10110011
{ 123 7B 01111011 ¦ 180 B4 10110100
| 124 7C 0111100 ¦ 181 B5 10110101
} 125 7D 01111101 ¬ 182 B6 10110110
~ 126 7E 0111110 ¬ 183 B7 10110111
  127 7F 0111111 ¦ 184 B8 10111000
А 128 80 10000000 ¦ 185 B9 10111001
Б 129 81 10000001 ¬ 186 BA 10111010
В 130 82 10000010 - 187 BB 10111011
Г 131 83 1000011 - 188 BC 10111100
Д 132 84 10000100 - 189 BD 10111101
Е 133 85 10000101 ¬ 190 BE 10111110
Ж 134 86 10000110 L 191 BF 10111111
З 135 87 10000111 + 192 C0 11000000
И 136 88 10001000 T 193 C1 11000001
Й 137 89 10001001 + 194 C2 11000010
К 138 8A 10001010 - 195 C3 11000011
Л 139 8B 10001011 + 196 C4 11001000
М 140 8C 10001100 ¦ 197 C5 11000101
Н 141 8D 10001101 ¦ 198 C6 11000110
О 142 8E 10001110 L 199 C7 11000111
П 143 8F 10001111 г 200 C8 11001000
Р 144 90 10010000 ¦ 201 C9 11001001
С 145 91 10010001 Т 202 CA 11001010
Т 146 92 10010010 ¦ 203 CB 11001011
У 147 93 10010011 = 204 CC 11001100
Ф 148 94 10010100 + 205 CD 11001101
Х 149 95 10010101 ¦ 206 CE 11001110
Ц 150 96 10010110 ¦ 207 CF 11001111
Ч 151 97 10010111 ¦ 208 D0 11010000
Ш 152 98 10011000 Т 209 D1 11010001
Символ  10-дық 16-лық 2-лік Символ 10-дық 16-лық 2-лік
T 210 D2 11010010 щ 233 E9 11101001
L 211 D3 11010011 ъ 234 EA 11101010
L 212 D4 11010100 ы 235 EB 11101011
- 213 D5 11010101 ь 236 EC 11101100
г 214 D6 11010110 э 237 ED 11101101
+ 215 D7 11010111 ю 238 EE 11101110
+ 216 D8 11011000 я 239 EF 11101111
- 217 D9 11011001 Е 240 F0 11110000
- 218 DA 11011010 е 241 F1 11110001
- 219 DB 11011011 242 F2 11110010
- 220 DC 11011100 ε 243 F3 11110011
¦ 221 DD 11011101 Ї 244 F4 11110100
¦ 222 DE 11011110 ї 245 F5 11110101
- 223 DF 11011111 246 F6 11110110
р 224 E0 11100000 247 F7 11110111
с 225 E1 11100001 º 248 F8 11111000
т 226 E2 11100010 · 249 F9 11111001
у 227 E3 11100011 250 FA 11111010
ф 228 E4 11100100 v 251 FB 11111011
х 229 E5 11100101 252 FC 11111100
ц 230 E6 11100110 ¤ 253 FD 11111101
ч 231 E7 11100111 ¦ 254 FE 11111110
ш 232 E8 11101000   255 FF 11111111

Информация о работе Пернетақтаны басқару