Системы программирования и операционные системы
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферат менеджмент, переплет диплома
| Добавил(а) на сайт: Брагин.
Предыдущая страница реферата | 3 4 5 6 7 8 9 10 11 12 13 | Следующая страница реферата
Если флаг требования выгрузки “flag”=0, это говорит о том, что введена неизвестная команда, а наш резидент уже инсталлирован. В этом случае выведем на экран предупреждающую надпись о невозможности повторной установки программы “Program already installed” сопровождаемую звуковым сигналом. После этого завершим программу функцией 4Ch с кодом возврата 01h.
Если после прерывания int2Fh c функцией F200h, возвратиться AL¹FFh, то нашего обработчика в памяти не оказалось. Сохраним смещения и сегменты системных обработчиков int09h и int2Fh, а затем заполним векторы смещениями наших обработчиков.
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» в текущем каталоге. Если файл не будет найден, то запустится процедура div_f, которая создаст рабочий файл и запишет в него строку «Skencode&Klav_flag file». В дальнейшем в этот файл будут записываться скэн-коды и байт флагов клавиатуры. Если файл уже существует, будет вызвана процедура div2_f, которая допишет в конец файла текущую дату и время.
Выведем на экран строку «Program installed» подтверждающую установку программы. Последними строками этой части инициализации вызывается функция DOS 31h, которая выполняет завершение программы с оставлением в памяти указанной ее части. Размер резидентной части программы (в параграфах) передается DOS в регистре DX. Размер резидентной секции определяется разностью смещений end_res-main, которая равна длине резидентной части программы в байтах, прибавляется размер PSP (l00h) и еще число 15 (Fh) для того, чтобы после целочисленного деления на 16 результат был округлен в большую сторону.
mov ax,3100h mov dx,(end_res-main+10fh)/16 int 21hС целью экономии памяти секция инициализации располагается я конце программы и отбрасывается при ее завершении.
Функция 31h, закрепив за резидентной программой необходимую для ее функционирования память, передает управление командному процессору и вычислительная система переходит в исходное состояние. Наличие программы, резидентной в памяти, никак не отражается на хода вычислительного процесса, за исключением того, что уменьшается объем свободной памяти. Одновременно в память может быть загружено любое число резидентных программ.
Резидентная часть обработчика.
Эта секция программы имеет две точки входа:
1. Перехват прерывания int09h(клавиатура). В результате нажатия или отпускания клавиши на клавиатуре запускается процедура new_09h.
2. Перехват мультиплексорного прерывания int2Fh. В результате перехвата мультиплексорного прерывания запускается процедура new_2fh.
Обработчик прерывания от клавиатуры.
Рекомендуем скачать другие рефераты по теме: план конспект урока, сочинение описание.
Категории:
Предыдущая страница реферата | 3 4 5 6 7 8 9 10 11 12 13 | Следующая страница реферата