Техническое Описание (КП - регистратор событий)
Описание файла
Файл "Техническое Описание" внутри архива находится в следующих папках: КП - регистратор событий, Регистратор событий по прерыванию на экран. Документ из архива "КП - регистратор событий", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.
Онлайн просмотр документа "Техническое Описание"
Текст из документа "Техническое Описание"
Московский государственный технический университет им. Н.Э. Баумана
Утверждаю:
Большаков С.А. "__"_____________2002 г.
Курсовая работа по системному программированию
“Регистратор событий по прерыванию на экран”
техническое описание
(вид документа)
писчая бумага
(вид носителя)
5
(количество листов)
Исполнитель:
студент группы ИУ5-54
Терентьев Д.Б.
____________________
"__"___________2002 г.
Москва - 2002
СОДЕРЖАНИЕ
-
ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ…………………………. 3
-
МОДУЛЬНАЯ СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………… 3
-
ОПИСАНИЕ МОДУЛЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.………………………. 3
-
ДАННЫЕ И ФАЙЛЫ ДАННЫХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ……………….. 3
-
ОСНОВНЫЕ АЛГОРИТМЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………… 4
-
ПРОЦЕДУРЫ И ФУНКЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………… 4
-
ВЕКТОРА ПРЕРЫВАНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………….. 6
1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
Язык программирования: Ассемблер
Компилятор: Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International
Компоновщик: Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Размер исполняемого файла (log.com) 1186 байта.
Размер резидентной части программы 986 байт.
2. МОДУЛЬНАЯ СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Программа состоит из трёх модулей исходного кода:
-основной модуль;
-модуль резидентной части;
-модуль загружающей части;
Основной модуль последовательно с помощью директивы INCLUDE включает в себя модуль резидентной части и модуль загружающей части.
Программа состоит из одного исполняемого модуля (LOG.COM).
3. ОПИСАНИЕ МОДУЛЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
3.1. Описание основного модуля
Файл основного модуля – Log.asm
Основной модуль содержит в себе основную программу (main). Он предназначен для объединения модулей резидентной и загружающей частей.
3.2. Описание модуля резидентной части
Файл модуля резидентной части – Resident.asm
В модуле резидентной части содержатся новые обработчики прерываний 2Dh и 21h. Новый обработчик прерывания 21h выполняет работу по выводу сообщений о создании и удалении файлов в системе. Новый обработчик прерывания 2Dh используется в качестве мультиплексного прерывания и необходим для загрузки и выгрузки программы.
Кроме того, этот модуль содержит в себе процедуры, необходимые для работы новых обработчиков прерываний: PrintStr и CRLF.
3.3. Описание модуля загружающей части
Файл модуля загружающей части – Init.asm
Назначение модуля загружающей части – загружать и выгружать резидентную часть программы по требованию пользователя.
В модуле загружающей части содержится процедура загрузки резидентной части программы в память (Init).
4. ДАННЫЕ И ФАЙЛЫ ДАННЫХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Данные резидентной части | ||
Old_21h | DWORD | Адрес старого обработчика прерывания 21h (прерывание DOS) |
Old_2Dh | DWORD | Адрес старого обработчика прерывания 2Dh (используемого в качестве мультиплексного) |
MesCRLF | Byte Array | Символы возврата каретки и перевода строки |
MesNew | Byte Array | Сообщение ‘Внимание! Был создан новый файл: ’ |
MesTemp | Byte Array | Сообщение ‘Внимание! Был создан временный файл в каталоге: ’ |
MesDel | Byte Array | Сообщение ‘Внимание! Был удален файл: ’ |
Данные нерезидентной (инициализирующей) части | ||
UnloadFlag | Byte | Флаг, показывающий необходимость выгрузить программу |
Temp_21h | DWORD | Временный адрес обработчика прерывания 21h (прерывание DOS) |
Temp_2Dh | DWORD | Временный адрес старого обработчика прерывания 2Dh (используемого в качестве мультиплексного) |
MesLoaded | Byte Array | Сообщение о том, что программа загружена резидентно в память |
MesLoaded | Byte Array | Сообщение о том, что программа успешно выгружена из памяти |
MesWrongParam | Byte Array | Сообщение о неверном параметре командной строки |
MesHelp | Byte Array | Строка с подсказкой по использованию данной программы |
MesOtherLoaded | Byte Array | Сообщение о невозможности выгрузки программы из памяти |
-
ОСНОВНЫЕ АЛГОРИТМЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Описание алгоритма процедуры загрузки резидентной части в память (Init):
-
Проверить командную строку на присутствие параметров
-
Проверить загружена ли программа в память
-
Если отсутствуют параметры, а программа загружена – выгрузка
-
Если отсутствуют параметры, а программа незагружена – загрузить резидентную часть программы в память
-
Если отсутствуют параметры, а программа загружена – проверить, не переопределены ли вектора прерываний другой программой
-
Если вектора переопределены – ошибка
-
Если вектора не переопределены – выгрузить резидентную часть программы
6. ПРОЦЕДУРЫ И ФУНКЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Название | Входные данные | Выходные данные | Описание |
New_2Dh | AH=0C8h AL=00h| AL=01h | AL=0FFh | AL=99h | Если AH==0C8h и AL==00h, то устанавливает AL в 0FFh и завершает обработку прерывания, возвращая управление пользователю. Если AH==0C8h и AL==01h, то восстанавливает старые обработчики прерываний. Если AH и AL содержат какие-либо другие значения – просто вызывает старый обработчик данного прерывания. |
New_21h | AH=3Ch| AH=5Bh | AH=5Ah | AH=41h | AX=7141h | AX=716Ch | Выведено сообщение или нет | Если AH=3Ch | AH=5Bh | AH=5Ah | AH=41h | AX=7141h | AX=716Ch , то выводится соответствующее сообщение о создании или удалении файла. Потом вызывает старый обработчик данного прерывания. Если не одно из условий не выполнено - просто вызывает старый обработчик данного прерывания. |
CreateFile | Адрес имени файла в DS:BX | Вывод сообщения | Выводится сообщение о создании файла, содержащее имя этого файла. Выводится символ перевода строки. |
CreateTempFile | Адрес пути к файлу в DS:BX | Вывод сообщения | Выводится сообщение о создании временного файла, содержащее путь к этому файлу. Выводится символ перевода строки. |
DeleteFile | Адрес имени файла в DS:BX | Вывод сообщения | Выводится сообщение об удалении файла, содержащее имя этого файла. Выводится символ перевода строки. |
PrintStr | Адрес строки в DS:BX | Вывод строки | Выводится строка символов средствами BIOS. |
CRLF | Нет | Вывод символа перевода строки | Выводится символ перевода строки средствами BIOS. |
Init | Командная строка | Загрузка программы в память, выгрузка программы из памяти или сообщение об ошибке | См. описание алгоритма процедуры Init |
CheckOther | Адреса векторов прерываний и адреса новых процедур обработки прерываний | Вывод сообщения | Если адреса векторов прерываний и адреса новых процедур обработки прерываний, то вывод сообщения об ошибке и выход из программы. |
SaveOldVectors | Адреса векторов прерываний | Old_2Dh Old_21h | Адреса векторов прерываний сохраняются в Old_2Dh и Old_21h |
SetNewVectors | Адреса новых процедур обработки прерываний | Новые процедуры обработки прерываний для векторов 21h и 2Dh | Для прерываний 21h и 2Dh устанавливаются новые процедуры обработки прерываний |
CmdLine | Командная строка | Вывод сообщения | Если в командной строке имеется неизвестный ключ, то выводится сообщение об ошибке. А если имеется ключ ‘/?’, то выполняется соответствующее действие. См. процедуру ScanHelp. |
ScanUnload | Командная строка | UnloadFlag | Если в командной строке нет параметров, то UnloadFlag:=1 иначе UnloadFlag:=0. |
ScanHelp | Командная строка | Вывод справки о программе | Если в командной строке имеется ключ ‘/?’, то выводится справка по работе с программой и программа завершается |
Help | Нет | Вывод справки о программе | Выводится справка по работе с программой и программа завершается |
7. ВЕКТОРА ПРЕРЫВАНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
21h - прерывание DOS
2Dh - прерывание, используемое в качестве мультиплексного
6