Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 6
з курсу „ Системне програмування ”
Тема: Управлiння клавiатурою IBM PC .
Виконав:
студент групи КІ-3
Львів – 2004
Мета роботи: Вивчення органiзацiї та принципiв роботи клавiатури, оволодiння навичками управлiння клавiатурою за допомогою системних функцiй.
Короткі теоретичні відомості
Процес взаємодiї системи з клавiатурою
_____
| | Адреса ПОП з вектора
|---------------->| ЦП |<--- переривання 09h (комiрки
|Апаратне |_____| 00:24h та 00:26h)
Вiдпускення/ |переривання |
натискання |типу 09h _____|______ Слово прапорiв клавiатури
клавiшi ____|______ Порт | ПОП int 09h| _______________
__|__|__|_ | Контролер | 60h |____________| | Адреса 40h:17h|
|Клавiатура|-->| клавiатури|------>| + |<--------|_______________|
|__________| |___________| Скен-|____________| | | | | | | | |
код | Розряд:
| 7: Ins
| 6: Caps Lock
| Скен + 5: Num Lock
| ASCII 4: Scroll Lock
Кільцевий | 3: Alt
буфер | 2: Ctrl
вводу | 1: Shift Left
____________ | 0: Shift Right
40h:1eh| | |
|___________ | |
Початок --->|Скен |ASCII | |
40h:1Ah | |_____|______| |
| |Скен |ASCII |<-|
| |_____|______|
| | |<------- Кiнець 40h:1Ch
| |____________|
| |____________| 40h:3Ch
| _____________________
|->| Програма користувача|
| int 16h |
|_____________________|
Клавiатура має три основних типи клавiш:
Символьнi (алфавiтно-цифровi): букви вiд А до Z, цифри вiд 0 до 9, символи !,@,#,$,% i т.iн.
Функцiональнi: <Home>, <End>, <Backspace>, стрiлки, <Return>, <Del>, <Ins>, <PgUp>, <PgDn> i програмно-функцiональнi клавiшi.
Управляючi: <Alt>, <Ctrl>, <Shift>, якi працюють в сукупностi з iншими клавiшами.
Роботою клавiатури управляє спецiальна мiкросхема - контролер клавiатури. В його функцiї входить розпiзнавання натиснутої клавiшi та пересилання закрiпленого за нею коду у свiй вихiдний регiстр (порт), як правило, з номером 60h. Код клавiшi, що поступає в порт, називається скен-кодом. При цьому кожнiй клавiшi присвоєнi два скен-коди, якi вiдрiзняються на 80h (менший код пересилається в порт при натисканнi клавiшi, бiльший - при вiдпусканнi).
Програма обробки переривання вiд клавiатури INT 09H окрiм портiв працює ще з двома областями пам'ятi: кiльцевим буфером вводу (адреси вiд 40h:1Eh до 40h:3Dh), куди врештi решт пересилаються ASCII коди натиснутих клавiш, i словом стану (словом прапорiв) клавiатури (адреса 40h:17h, 40h:18h), в якому фiксується стан управляючих клавiш (<Shift>,<Caps Lock>,<Num Lock> i т.iн). Якщо визначено скен-код клавiшi-перемикача (правий Shift, лiвий <Shift>, <Ctrl>, <Alt>, <Scroll Lock>, <Num Lock>, <Caps Lock> i <Insert>), змiнюється вмiст комiрок слова стану клавiатури. В буфер клавiатури при цьому нiчого не пересилається (виключенням є лише клавiша <Insert>).
Завдання на лабораторну роботу
Створити програму, що реалiзує вказаний викладачем варiант завдання. Програму оформити у виглядi .COM файлу.
Запустити с...