аймера.
Зрозуміло, обробка переривань не повинна займати багато часу: якщо переривання відбувається досить часто (наприклад, переривання послідовного порту може відбуватися 28800 разів в секунду), його обробник обов'язково повинен виконуватися за більш короткий час. Якщо, наприклад, обробник переривання таймера буде виконуватися 1/32, 4 секунди, тобто половину часу між перериваннями, вся система стане працювати в два рази повільніше. А якщо ще одна програма з таким же довгим обробником перехопить це переривання, система зупиниться зовсім. Саме тому обробники переривань прийнято писати виключно на асемблері.
2.7. Резидентний обробник переривань від клавіатури з підключенням до системного обробника
Практично будь-яка програма, в якій передбачено управління ходом її виконання за допомогою команд, що подаються з клавіатури, має в своєму складі обробник переривань від клавіатури. Залежно від поставлених перед нею завдань, обробник може підключатися до системного, виконуючи обробку скан-кодів натискає клавішу, або після системного, працюючи в цьому випадку з кодами ASCII. виникаючими на виході системного обробника. Нерідкі випадки, коли прикладної обробник виконує частину своїх функцій до системного, а частина - після. Справжня і кілька наступних статей присвячені цій важливій для прикладного програміста питання.
Для того щоб написати, обробник переривань від клавіатури, необхідно добре уявляти, яким чином вводяться, куди потрапляють і як обробляються символи, що вводяться з клавіатури. Процес взаємодії системи з клавіатурою зображений на рис. 2.3. p> IRQ INT Адреса системного
Апаратне Контролер Мікро-обробника int09h
переривання переривань Вектор09 процесор з вектора 09
на IRQ1
IRQ7 Запуск систем
Натискання або обробника int09h
відпускання Байт прапорів
будь-якої клавіші Системний клавіатури
Контролер Порт 60h обробник [40h: 17h]
клавіатури Скан-код int09h | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Клавіатура
Ins
скан-код Код Caps Lock
Кільцевій буфер ASCII Num Lock
40h: 1Eh введення Scroll Lock
40h: 1Ah Alt
Адреса головного скан ASCII Ctrl
символу скан ASCII Shift лівий
Скан ASCII Shift правий
Програма скан ASCII
користувача Адреса хвостового
В· В· В· Символу
Запит на введення 40h: 3Ch
з клавіатури Введення самого
"старого" символу
Рис. 2.3. Процес взаємодії системи з клавіатурою.
Роботою клавіатури управляє спеціальна електронна схема - контролер клавіатури. У його функції входить розпізнавання натиснутою клавіші і приміщення закріпленого за ній коду у свій вихідний регістр (порт) з номером 60h. Код клавіші, що надходить в порт, називається скан-кодом і є, по суті, порядковим номером кла-
віші. При цьому кожній кла...