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

Реферат Резидентний оброблювач клавіатури (перехоплення натискань клавіш і запис у файл)





л не буде знайдений, то запуститься процедура div_f, яка створить робочий файл і запише в нього рядок В«Skencode & Klav_flag fileВ». Надалі в цей файл будуть записуватися скан-коди і байт прапорів клавіатури. Якщо файл вже існує, буде викликана процедура div2_f, яка допише в кінець файлу поточну дату і час. p> Виведемо на екран рядок В«Program installedВ» підтверджує установку програми. Останніми рядками цієї частини ініціалізації викликається функція DOS 31h, яка виконує завершення програми із залишенням в пам'яті зазначеної її частини. Розмір резидентної частини програми (У параграфах) передається DOS в регістрі DX. Розмір резидентної секції визначається різницею зсувів end_res-main, яка дорівнює довжині резидентної частини програми в байтах, додається розмір PSP (l00h) і ще число 15 (Fh) для того, щоб після цілочисельного ділення на 16 результат був заокруглений в більшу сторону.

mov ax, 3100h mov dx, (end_res-main +10 fh)/16 int 21h

З метою економії пам'яті секція ініціалізації розташовується я кінці програми і відкидається при її завершенні.

Функція 31h, закріпивши за резидентної програмою необхідну для її функціонування пам'ять, передає управління командному процесору і обчислювальна система переходить в початковий стан. Наявність програми, резидентної в пам'яті, ніяк не відбивається на ходу обчислювального процесу, за винятком того, що зменшується обсяг вільної пам'яті. Одночасно в пам'ять може бути завантажено будь-яке число резидентних програм.

Резидентна частина обробника.

Ця секція програми має дві точки входу:

1. Перехоплення переривання int09h (клавіатура). В результаті натискання або відпускання клавіші на клавіатурі запускається процедура new_09h. p> 2. Перехоплення мультиплексорного переривання int2Fh. У результаті перехоплення мультиплексорного переривання запускається процедура new_2fh.

Оброблювач переривання від клавіатури.

Після запуску процедури new_09h збережемо використовувані регістри. Потім отримаємо скан-код останньої натиснутою клавіші. В іншому випадку відновимо регістри і передамо управління наступному по ланцюжку оброблювачу клавіатури (швидше за все це буде BIOS-івський обробник В«int09hВ»).

in al, 60h

cmp al, 80h

ja exit

Потім запишемо цей скан-код у буфер, вважаємо байт прапорів клавіатури з області даних BIOS і також занесемо в буфер.

Наш буфер має об'єм 32 байта, тому після кожного шістнадцятого натискання необхідно зберігати буфер в робочому файлі. Для підрахунку натискань введена змінна-лічильник sch. p> Збільшимо лічильник на 2, потім перевіримо чи повний буфер, порівнявши лічильник з 32. Якщо буфер не повний, збережемо використовувалися регістри і передамо управління наступному по ланцюжку оброблювачу клавіатури. Якщо буфер забитий, передамо управління процедурі fil. p> Ця процедура відкриє наш ро...


Назад | сторінка 17 з 23 | Наступна сторінка





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

  • Реферат на тему: Розробка програми, що реалізує алгоритм, який використовує z-буфер
  • Реферат на тему: Розробка програми-драйвера клавіатури
  • Реферат на тему: Буфер обміну
  • Реферат на тему: Сортування вводяться з клавіатури слів
  • Реферат на тему: Переклад тексту в іншу розкладку клавіатури