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

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





я лічильника в BL

mov [bufer + bx], al; Запишемо в буфер скан-код клавіші

inc bl; Збільшимо зсув буфера

push es; Збережемо регістр ES

mov ax, 40h; Набудуємо ES на початок області даних BIOS

mov es, ax

mov al, es: [17h]; Занесемо байт прапорів клавіатури в AL

pop es; Відновимо ES

mov [bufer + bx], al; Запишемо байт прапорів у буфер

inc bl; Збільшимо зсув на 1

add sch, 2; Лічильник натискань +2

cmp sch, 32; Пора скидати буфер в файл? p> je go; Так - на процедуру запису в файл

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

go: call fil; Виклик процедури запису у файл

; Відновимо використовувалися регістри

exit: pop ds

pop dx

pop cx

pop bx

pop ax

jmp cs: old_09h; Передамо управління системного оброблювачу "int09h"

new_09h endp; Кінець процедури обробника від клавіатури

; Процедура запису в файл скан-кодів і прапорів клавіатури

fil proc

push cs; Набудуємо DS на наш сегмент

pop ds

mov ah, 3dh; Функція відкриття файлу

mov al, 1; для запису

mov dx, offset filename; DS: DX В¬ ASCIIZ імені файлу

int 21h

mov bx, ax; Дескриптор у ВХ

xor cx, cx; відчистити СХ

xor dx, dx; і DX

mov ax, 4202h; Функція установки покажчика в кінець файлу

int 21h

mov ah, 40h; Функція запису в файл

mov cl, sch; CL В¬ кількість байт

mov dx, offset bufer; DS: DX В¬ адреса буфера

int 21h

mov ah, 3eh; Функція закриття файлу

int 21h

mov sch, 0; обнулили лічильник

ret; Вихід з процедури

fil endp; Кінець процедури запису у файл

; Оброблювач мультиплексорного переривання

new_2fh proc

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:

jmp cs: old_2fh; Перехід в наступний по ланцюжку обробник переривання 2Fh

; Вивантажимо програму з пам'яті, попередньо відновивши всі перехоплені нею вектори

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

off: push ds

push es

push dx

push ax

push bx

push cx

call fil; Виклик процедури запису в файл вмісту буфера

; Відновимо використовувалися регістри

pop cx

pop bx

pop ax

; Відновимо вектор 09h

mov ax, 2509h; Функція установки вектора

lds dx, cs: old_09h; Заповнимо DS: DX

int 21h

...


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





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

  • Реферат на тему: Способи запису інформації на вінчестер, головки читання-запису
  • Реферат на тему: Запис в графічний файл формату BMP
  • Реферат на тему: Програма, що реалізує роботу з текстом і збереженням даних у файл
  • Реферат на тему: Застосування односкважінного досвіду ("push-pull") для очищення п ...
  • Реферат на тему: Файл .htaccess