Управлiння клавiатурою IBM PC

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Системне програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 6 з курсу „ Системне програмування ” Тема: Управлiння клавiатурою IBM PC . Львів – 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 файлу. Запустити створену програму та задокументувати результати її виконання. Скласти звiт про виконану роботу. Варіант 9. Органiзувати ввiд циклiчний посимвольний ввiд з ехо-вiдображенням (функцiя 01h INT 21H) з клавiатури. Забезпечити переключення мiж режимами вводу/вiдображення символьних i функцiональних/управляючих кодiв натисканням певної комбiнацiї клавiш. Перевiрити реакцiю програми на <Ctrl>/C. Забезпечити можливiсть перенаправлення вводу та виводу.  Вміст .asm-файлу CODE SEGMENT WORD 'CODE' ORG 100h ASSUME cs:CODE, ds:CODE, ss:CODE, es:CODE begin: Jmp progbody ControlCMsg db 10,13,' * Press any key/combination to view its ASCII/EXT code *' db 10,13,' * press CTRL+C to exit *$' KeyMsg db 10,13,'Keypressed echo: $' CodeMsg db 10,13,'ASCII-code: $' ExtMsg db 10,13,'Extended-code: $' KeyCode db 0,0,'$' LineFeed db 10,13,'$' progbody: ;********************************************* mov dx,OFFSET ControlCMsg; mov ah,09 int 21h cycle: mov dx,OFFSET KeyMsg; mov ah,09 int 21h mov ah,01h int 21h cmp al,0 jz ext mov bh,0 ; pressed key is ASCII jmp print ext: mov bh,1 ; pressed key is functional mov ah,01h int 21h ; ѕ extended scan-code print: mov dl,al ; put symbol to out register mov bl,al ;************ ?# digit (first)**************** and al,0f0h shr al,4 cmp al,09h jg az01 add al,30h mov KeyCode,al jmp next01 az01: add al,37h mov KeyCode,al next01: ;************ #? digit (second)*************** mov al,bl and al,00fh cmp al,9h jg az02 add al,30h mov KeyCode+1,al jmp next02 az02: add al,37h mov KeyCode+1,al next02: ;********************************************* mov dx,OFFSET CodeMsg cmp bh,1 jz extprn jmp asciiprn extprn: mov dx,OFFSET ExtMsg asciiprn: mov ah,09 int 21h mov dx,OFFSET KeyCode ;; mov ah,09 ; print string int 21h ;; jmp cycle ;********************************************* mov ah,4Ch int 21h CODE ENDS END begin Результат виконання програми * Press any key/combination to view its ASCII/EXT code * * press CTRL+C to exit * Keypressed echo: a ( Натиснуто клавішу “a” ASCII-code: 61 Keypressed echo: 1 ( Натиснуто клавішу “1” ASCII-code: 31 Keypressed echo: ← ( Натиснуто клавішу ESC ASCII-code: 1B Keypressed echo: ; ( Натиснуто клавішу F1 Extended-code: 3B Keypressed echo: ^C ( Натиснуто CTRL+C Виконання програми завершено. Висновок: Виконуючи дану лабораторну роботу, я вивчив органiзацiю та принципи роботи клавiатури, оволодiв навичками управлiння клавiатурою за допомогою системних функцiй.
Антиботан аватар за замовчуванням

31.03.2013 15:10

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!