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

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





бочий файл, встановить покажчик в кінець і допише стільки байт з буфера починаючи спочатку, скільки вкаже їй змінна-лічильник.

mov ah, 40h

mov cl, sch

mov dx, offset bufer

int 21h

Це зроблено для того, щоб при видаленні програми з пам'яті в файл були записані всі скан-коди включаючи команду на видалення. Цей випадок розглянемо нижче. Після того як дані будуть збережені, відновимо використовувалися регістри і передамо управління наступному по ланцюжку оброблювачу клавіатури. h5> Оброблювач мультиплексорного переривання

Процедура new_2fh перехопить переривання 2Fh, і якщо переривання викликано разом з функцією F1h, то залежно від подфункции значення якої знаходиться в AL виконає наступні дії:

1. Якщо подфункция що знаходиться в AL = 00h (код наявності в пам'яті нашого обробника), то наш обробник поверне в AL = FFh і вийде з переривання.

cmp al, 00h

je inst

...

inst: mov al, 0ffh

iret

2. Якщо подфункция що знаходиться в AL = 01h (Команда на видалення з пам'яті обробника), то збережемо використовувані регістри, викличемо процедуру fil (робота цієї процедури була описана вище), а потім звільнимо блоки пам'яті зайняті нашим обробником, відновимо старі вектори 09h і 2Fh. Відновимо використовувалися регістри і вийдемо з переривання.

Якщо мультиплексорне переривання було викликано з іншого функцією або з нашої функцією але з іншими подфункция, то обробник передасть управління наступному по ланцюжку оброблювачу мультиплексорного переривання.

cmp ah, 0f1h

jne out_2fh

cmp al, 00h

je inst

cmp al, 01h

je off

jmp short out_2fh

inst: mov al, 0ffh

iret

out_2fh:

В В В В В В В В В 


















3.3. Лістинг програми

text segment 'code'

assume cs: text, ds: text

org 256

main proc

jmp init

; Поля даних резидентної секції

old_2fh dd 0; Осередок для збереження системного вектора 2Fh

old_09h dd 0; Осередок для збереження системного вектора 09h

bufer db 34 dup (?); Буфер для скан-кодів і прапорів клавіатури

sch db 0; Лічильник натискань клавіш

filename db 's_code & f.txt', 0; Константа містить ім'я файлу з яким працює програма

; Оброблювач від клавіатури

new_09h proc

; Збережемо використовувані регістри

push ax

push bx

push cx

push dx

push ds

push cs; Набудуємо DS на наш сегмент для простоти програмування

pop ds

in al, 60h; Отримаємо скан-код клавіші

cmp al, 80h; Перевіримо, чи є скан-код кодом натискання

ja exit; Ні - на вихід

mov bh, 0, 0 В® BH

mov bl, sch; Поточне значенн...


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





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

  • Реферат на тему: Переривання вагітності
  • Реферат на тему: Переривання і виключення
  • Реферат на тему: Внутрішньоутробне вдосконалення людини і переривання вагітності
  • Реферат на тему: Цикли, переривання, компоненти для відображення тексту
  • Реферат на тему: Застосування односкважінного досвіду ("push-pull") для очищення п ...