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

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





ристувача і які кнопки він після цього натискав. p> Дана програма працює тільки в середовищі MS-DOS.

В В В В В В В В В В  3.2 Опис для програміста

Програма пишеться у форматі СОМ, тому в ній передбачається тільки один сегмент, з якому зв'язуються сегментні регістри CS і DS; на початку сегмента резервується 256 байт дня PSP.

Ініціалізація.

При запуску програми з клавіатури управління передається (відповідно до параметром директиви end) на початок процедури main. Командою jmp відразу ж здійснюється перехід на секцію ініціалізації, яка оформлена у вигляді окремої процедури. У секції ініціалізації готуються умови для роботи програми вже в резидентном стані.

У початковій частині ініціалізації ми перевіряємо наявність хвоста в PSP, якщо ж у командному рядку крім імені команди нічого не було - переходимо на подальший аналіз:

mov cl, es: 80h

cmp cl, 0

je live

Якщо хвіст присутній, перевіримо чи не був введений очікуваний параметр "off". При позитивному результаті перевірки встановлюємо прапор вимоги вивантаження "flag" в одиницю і переходимо на подальший аналіз.

Потім викликаємо мультиплікувавши переривання int2Fh c функцією F1h і подфункцией перевірки на повторну установку 00h. Якщо наш обробник знаходиться в оперативній пам'яті - він поверне AL = FFH, і програма перейде на мітку installed. Перевіримо чи встановлений прапор вимоги вивантаження "Flag". Якщо flag = 1 перейдемо на мітку unins, де перешлемо в першу (резидентну) копію програми запит на вивантаження з оперативної пам'яті за коштами переривання int2Fh і функцією F2h з підфункції 01h. Після чого відбувається виведення рядка "Program is DIE" на екран сигналізує про успішному видаленні резидентної частини програми. Після чого вийдемо з програми, звичайним чином, функцією 4С00h. p> Якщо прапор вимоги вивантаження "flag" = 0, це говорить про те, що введена невідома команда, а наш резидент вже інстальований. У цьому випадку виведемо на екран попереджувальний напис про неможливість повторної установки програми "Program already installed" супроводжувану звуковим сигналом. Після цього завершимо програму функцією 4Ch з кодом повернення 01h. p> Якщо після переривання int2Fh c функцією F200h, повернутися AL В№ FFh, то нашого обробника в пам'яті не виявилося. Збережемо зсуву і сегменти системних обробників int09h і int2Fh, а потім заповнимо вектори зміщеннями наших обробників. p> mov ax, 352fh

int 21h

mov word ptr cs: old_2fh, bx

mov word ptr cs: old_2fh +2, es

mov ax, 252fh

mov dx, offset new_2fh

int 21h

mov ax, 3509h

int 21h

mov word ptr cs: old_09h, bx

mov word ptr cs: old_09h +2, es

mov ax, 2509h

mov dx, offset new_09h

int 21h

Після цього зробимо пошук робочого файлу В«s_code & f.txtВ» в поточному каталозі. Якщо фай...


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





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

  • Реферат на тему: Якщо ви викликаєте швидку допомогу
  • Реферат на тему: Якщо ремонт виявився модернізацією
  • Реферат на тему: Якщо лікарняний невірно розрахований
  • Реферат на тему: Якщо ваш працівник затриманий чи засуджений
  • Реферат на тему: Редагування документа засобами програми MS Word