Лабораторная работа 2. Лабораторная работа 2 Драйвер клавиатуры по дисциплине Эксплуатация и развитие компьютерных сетей и систем
Скачать 179 Kb.
|
Министерство образования и науки Российской Федерации ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра промышленной электроники (ПрЭ) Лабораторная работа № 2 «Драйвер клавиатуры»по дисциплинеЭксплуатация и развитие компьютерных сетей и систем.Выполнил: Студент ФДО Специальность: 210106 « » 2013г. Проверил: 2013 Введение Целью работы: изучение и реализация принципов работы драйвера клавиатуры. Требуется написать и отладить драйвер клавиатуры с помощью имитатора прикладной программы. Выполнение работы По своему назначению клавиши на клавиатуре делятся на шесть групп: функциональные клавиши; алфавитно-цифровые; клавиши управления и индикации; цифровая панель; специализированные; клавиши управления курсором. Первые три группы – основные и встречаются на любой клавиатуре. Рассмотрим их работу подробнее и напишем программы управления клавишами для трех типов клавиш. Алфавитно-цифровые. К алфавитно-цифровому блоку относятся клавиши для ввода букв, цифр, знаков пунктуации и арифметических действий, специальных символов (буквы от a до z, цифры от 0 до 9, символы %, $, # и т.д.). При программировании этих клавиш обычно применяется прерывание INT21H. Так же можно применить прерывание INT16H и определять клавишу по так называемому СКЭН-КОДУ. Суть разработанной нами программы: пользователю выдается сообщение нажать любую клавишу. Если нажата «o», то выдается сообщение, что нажата клавиша «o», в противном случае выдается сообщение о том, что нажата клавиша НЕ «o». Функциональные. Расположены обычно на верхней части клавиатуры — от F1 до F12 . Функции этих клавиш определяются программой и операционной системой, с которой пользователь работает в данный момент. При программировании этих клавиш в программе используются так называемые СКЭН-КОДЫ для определения, какая именно клавиша нажата. Так же используется прерывание INT16H. Суть нашей программы: при нажатии функциональной клавиши на экране печатается название функциональной кнопки. Клавиши управления и индикации. Для управления и индикаци чаще всего используется клавиши Alt, Ctrl, SHift, NUM Lock и др. При программировании используется прерывание INT16H и чтение специального регистра данных о состоянии данных клавиш на клавиатуре. Каждый бит регистра данных отвечает за определенную нажатую клавишу или комбинацию клавиш. Листинг 1- Драйвер алфавитно-цифровых клавиш Program INT21H; uses CRT; VAR flag: byte; Begin ClrScr; Writeln('Programm INT21H'); Writeln('Press Any Key'); flag:=0; ASM {Начало ассемблерного блока} {Ожидание нажатой клавиши} MOV aH,01H {Ввод символа с клавиатуры с эхом} INT 21H {Прерывание} CMP AL,'o' {Если символ латинская буква "o"} JNE @NEXT MOV flag,1 {То выставляем флаг} JMP @END @NEXT: MOV flag, 0 {Иначе обнуляем флаг} @END: END; writeln; if (flag = 1) tHen writeln('You pusHed "o"') else writeln('You pusHed NOT "o"'); readln; END. Рис.1 – Выполнение программы INT21H Листинг 2 - Драйвер функциональных клавиш Program Functional; uses CRT; var i: byte; Begin clrscr; writeln('PusH any functional key.'); ASM MOV AH,00 {Запрос на чтение символа} INT 16H MOV i,AH {Запомним результат} END; case i of {Если число диапазоне СКЭН-кодов функциональных клавиш, то} $3B..$44 : writeln('You pusHed key F',i-$3a); else writeln('You pusHed not functional key!'); END; readln; END. Рис.2 – Выполнение программы Functional Листинг 3 - Драйвер клавиш управления и индикации Program Indication; uses crt; var x,i:byte; key:array[0..7] of byte; {Массив клавиш} Begin clrscr; ASM MOV aH,02 {запрос на определение текущего состояния регистра клавиатуры} INT 16H {По прерыванию 16HРР} MOV x,AL {Запомним результатРР} END; for i:=0 to 7 do {Выделяем каждый бит в массив keyРР} begin key[i]:= x mod 2; x:= x div 2; END; if key[0]=1 tHen write('RigHt SHift',';'); if key[1]=1 tHen write('Left SHift','; '); if key[2]=1 tHen write('Ctrl/SHift','; '); if key[3]=1 tHen write('Alt/SHift','; '); if key[4]=1 tHen write('Scroll Lock','; '); if key[5]=1 tHen write('Num Lock','; '); if key[6]=1 tHen write('Caps Lock','; '); if key[7]=1 tHen write('Ins','. '); writeln; readln; END. Рис.3 – Выполнение программы Indication Заключение В ходе проделанной работы были разработаны программы-драйвера для клавиатуры. Всего реализовано 3 программы драйвера: для алфавитно-цифровых, функциональных и управляющих клавиш. |