Резидентный обработчик клавиатуры (перехват нажатий клавиш и запись в файл)
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат на тему творчество, банк рефератов
Добавил(а) на сайт: Козарис.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата
2. Описание для программиста………………………………………………………………….20
3. Листинг программы………………………………………………………………………..….24
4. Рекомендации по улучшению………………………………………………………………...32
4. Список используемой литературы…………………………………………………………..….33
1. Задание
Разработка резидентного обработчика прерываний от клавиатуры с подключением до системного. Данный обработчик должен производить запись скэн-кодов всех нажимаемых клавиш, а также фиксировать байт флагов клавиатуры при каждом нажатии. Обработчик должен иметь механизм выгрузки из оперативной памяти встроенный в него самого. Также программа должна иметь защиту от повторной установки в оперативную память.
2. Краткие теоретические сведенья
2.1. Резидентный обработчик прерываний
Большой класс программ, обеспечивающих функционирование вычислительной
системы (драйверы устройств, программы шифрации и защиты данных, русификаторы, обслуживающие программы типа электронных блокнотов или
калькуляторов и др.), должны постоянно находиться в памяти и быстро
реагировать на запросы пользователя или на какие-то события, происходящие в
вычислительной системе. Такие программы носят названия программ, резидентных в памяти (Terminate and Stay Resident, TSR), или просто
резидентных программ. Сделать резидентной можно как программу типа СОМ, так и программу типа
ЕХЕ, однако ввиду того, что резидентная программа должна быть максимально
компактной, чаще всего в качестве резидентных используют программы типа
СОМ.
Рассмотрим типичную структуру резидентной программы и системные средства оставления ее в памяти после инициализации (рис. 2.1). text segment 'code' assume CS:text,DS:text org 100h main proc jmp init ;Переход на секцию инициализации
; Данные резидентной секции программы
. . . entry: ; Текст резидентной секции программы
. . .
main endp
init proc ;Секция инициализации
. . .
mov DX, (init-main+10Fh)/16;Paзмер в параграфах mov АН,3100h ;функция "Завершить и оставить в int 21h ; памяти" init endp text ends end main
Рис 2.1. Типичная структура резидентной программы.
Программа пишется в формате СОМ, поэтому в ней предусматривается только
один сегмент, с котором связываются сегментные регистры CS и DS; в начале
сегмента резервируется l00h байт дня PSP.
При запуске программы с клавиатуры управление передается (в соответствии
с параметром директивы end) на начало процедуры main. Командой jmp сразу же
осуществляется переход на секцию инициализации, которая может быть
оформлена в виде отдельной процедуры или входить в состав процедуры main.
В секции инициализации, в частности, подготавливаются условия для работы
программы уже в резидентном состоянии. Последними строками секции
инициализации вызывается функция DOS 31h, которая выполняет завершение
программы с оставлением в памяти указанной ее части. Эта функция не может
оставлять резидентными программы размером больше 64 Кб, но многие
программы, написанные на ассемблере, соответствуют этому условию. Так как
резидентные программы уменьшают объем основной памяти, их всегда пишут на
ассемблере и оптимизируют для достижения минимального размера.
Размер резидентной части программы (в параграфах) передается DOS в
регистре DX. Определить размер резидентной секции можно, например, следующим образом. К разности смещений mil-main, которая равна длине
резидентной части программы в байтах, прибавляется размер PSP (l00h) и еще
число 15 (Fh) для того, чтобы после целочисленного деления на 16 результат
был округлен в большую сторону.
С целью экономии памяти секция инициализации располагается я конце программы и отбрасывается при ее завершении.
Точка входа ( main при загрузке jmp init
. Резидентные
( поля данных
Резидентная часть
Точка входа ( entry программы при вызове . Резидентные
( коды iret init
Рекомендуем скачать другие рефераты по теме: конспекты занятий в детском саду, менеджмент.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата