Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Обробка програмних і апаратних переривань в IBM PC сумісних комп'ютерах за допомогою резидентних програм

Реферат Обробка програмних і апаратних переривань в IBM PC сумісних комп'ютерах за допомогою резидентних програм





в пам'яті резидентної частини здійснюється за схемою запит-відгук raquo ;: нерезидентна частина заповнює регістр AX (в регістр AH поміщається номер функції, причому номери 00h - 0BFh зарезервовані для MS DOS, а номери 0C0h - 0FFh надаються для прикладних програм; в регістр AL поміщається номер підфункції) і викликає переривання 2Fh. Якщо резидентная частина вже встановлена ??і її повторна установка не потрібно, необхідно повернути в регістрі AL сигнальне значення 0FFh. Таким чином, резидентна частина повинна в своєму складі мати також обробник переривання 2Fh, а нерезидентна частина повинна для перевірки наявності резидентної програми в пам'яті викликати це переривання і аналізувати результат.

Крім цього, для реалізації вимоги про включенні і виключенні резидентної програми, найбільш доцільним є введення в області даних резидентної частини програми спеціального байт-маркера активності резидентної частини. При неактивному стані програми вона не робить ніякого впливу на роботу комп'ютера, а при активному стані виконує заданий функціонал.

Оскільки резидентна програма повинна займати мінімум пам'яті, обрано рішення, при якому програма компілюється в COM файл.

Загальна структура програми приведена на малюнку.



. Розробка алгоритму резидентної програми


У додатку А представлена ??блок-схема роботи инициализирующей частини програми. У додатку Б - блок-схема роботи переривання 2FH. У додатку В - блок-схема роботи переривання 09H.

При запуску програми управління передається нерезидентної частини програми. Нерезидентна частина виконує ініціалізацію програми так:

. Перевіряє, чи не встановлена ??вже резидентна програма, поміщаючи в регістр AX магічне значення 0CDBAh (функція 0CDh, подфункция 0BAh), виконуючи програмне переривання 2Fh і перевіряючи повернення - якщо програма вже встановлена, в регістрі AL при поверненні з переривання повинно виявитися сигнальне значення 0FFh;

. Якщо програма вже встановлена, то проводиться вивід повідомлення Програма вже встановлена! Raquo; і негайне завершення програми без залишення резидентної частини в пам'яті;

3. Якщо програма ще не встановлена ??(значення в регістрі AL відрізняється від 0FFh), проводиться перехоплення використовуваних векторів переривань 09h і 2Fh із збереженням старих значень цих векторів в області даних резидентної частини програми;

4. Проводиться вивід повідомлення про успішну установку резидентної частини і резидентное завершення програми викликом функції 31h системного переривання 21h. Для того, щоб резидентна частина програми займала в пам'яті якомога менше місця, проводиться обчислення мінімального необхідного обсягу пам'яті, займаного тільки резидентної частиною. Пам'ять, займана нерезидентної частиною (ініціалізувалися код), для роботи резидентної частини не потрібна і повертається системі.

Резидентна частина програми отримує управління допомогою програмних або апаратних переривань. Використовуються два переривання - 09h і 2Fh.

Оброблювач мультиплексного переривання 2Fh резидентної частини програми виконує наступні дії:

. Перевіряє значення в регістрі AX на відповідність значенню 0CDBAh. Якщо значення співпало, це свідчить про те, що виконаний ще один запуск програми, і инициализирующая частина перевіряє, чи не встановлена ??вже резидентна програма. У цьому випадку слід в регістр AL записати сигнальне значення 0FFh і негайно завершити обробку переривання і повернути управління викликає програмі. В іншому випадку, слід передати управління далі по ланцюжку raquo ;, використовуючи збережений обробник цього переривання.

Обробник переривання 09h (клавіатури) отримує управління при кожному натисканні клавіші на клавіатурі. Особливістю цього обробника є те, що він отримує управління двічі: перший раз при натисканні клавіші, другий раз - при відпуску клавіші. Для правильної обробки натискань клавіш в програмі організований спеціальний байт-маркер - прапорець raquo ;, який зводиться при натисканні клавіші і скидається при відпуску клавіші. Стан цього прапорця дозволяє розрізнити натискання і відпускання клавіш. Обробник переривання 09h виконує наступні дії:

. Перевіряє стан активності резидентної частини. Якщо резидентная частина не активна (вимкнена), управління передається збереженому оброблювачу переривання 09h для звичайної обробки натискань клавіатури.

. Якщо резидентная частина активна raquo ;, проводиться перевірка - натиснута клавіша або відпущена. Якщо клавіша натиснута, проводиться зрушення палаючої лампочки клавіатури на 1 (по кільцю) і установка стану ла...


Назад | сторінка 3 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Переривання вагітності
  • Реферат на тему: Переривання і виключення
  • Реферат на тему: Внутрішньоутробне вдосконалення людини і переривання вагітності
  • Реферат на тему: Цикли, переривання, компоненти для відображення тексту
  • Реферат на тему: Створення програми для обчислення значення функції