-3. Техническое Описание (КП - загрузчик шрифта, 1 вариант)
Описание файла
Файл "-3. Техническое Описание" внутри архива находится в следующих папках: КП - загрузчик шрифта, 1 вариант, IceTSR, Docs. Документ из архива "КП - загрузчик шрифта, 1 вариант", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.
Онлайн просмотр документа "-3. Техническое Описание"
Текст из документа "-3. Техническое Описание"
5
Московский государственный технический университет им. Н.Э.Баумана
____________________________________________________________________
Утверждаю: | |
Большаков С.А. | "__"_____________2002 г. |
Курсовая работа по системному программированию
“Загрузчик текстового шрифта в память дисплея ”
Техническое описание
(вид документа)
писчая бумага
(вид носителя)
5
(количество листов)
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-51 | _____________________ |
Свиридов А.С. | "__"_____________2002 г. |
Москва - 2002
________________________________________________________________
СОДЕРЖАНИЕ
-
ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ…………………………. 3
-
МОДУЛЬНАЯ СТРУКТУРА ПРОГРАМНОГО ОБЕСПЕЧЕНИЯ……………………… 3
-
ОПИСАНИЕ МОДУЛЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.………………………. 3
-
ДАННЫЕ И ФАЙЛЫ ДАННЫХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ……………….. 3
-
ОСНОВНЫЕ АЛГОРИТМЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………… 4
-
ПРОЦЕДУРЫ И ФУНКЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………… 4
-
ВЕКТОРА ПРЕРЫВАНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ…………………….. 5
1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ
Язык программирования: Ассемблер
Компилятор: Turbo Assembler Version 4.1
Компоновщик: Turbo Link Version 7.1.30.1.
Размер исполняемого файла (Font.com) 1004 байта.
Размер резидентной части программы 1136 байта.
2. МОДУЛЬНАЯ СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Программа состоит из трёх модулей исходного кода:
- основной модуль;
- модуль резидентной части;
- модуль загружающей части;
Основной модуль последовательно с помощью директивы INCLUDE включает в себя модуль резидентной части и модуль загружающей части.
Программа состоит из одного исполняемого модуля (Font.com).
3. ОПИСАНИЕ МОДУЛЕЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
3.1. Описание основного модуля
Файл основного модуля –Font.asm
Основной модуль содержит в себе основную программу (main). Он предназначен для объединения модулей резидентной и загружающей частей.
3.2. Описание модуля резидентной части
Файл модуля резидентной части – TSR.inc
В модуле резидентной части содержатся новые обработчики прерываний 2Fh и 09h. Новый обработчик прерывания 09h выполняет работу по перехвату нажатия клавиш и реагированию на нажатие горячей клавиши. Новый обработчик мультиплексного прерывания 2Fh необходим для управления программой извне (из других программ).
Кроме того, этот модуль содержит в себе процедуру SwapChars, выполняющую работу по замене шрифта, и процедуру CheckIfLast, которая проверяет, является ли вектор прерывания программы последним ("верхним"), - это определяет, возможна ли выгрузка.
3.3. Описание модуля загружающей части
Файл модуля загружающей части – Init.inc
Назначение модуля загружающей части – загружать и выгружать резидентную часть программы по требованию пользователя.
В модуле загружающей части содержится процедура загрузки резидентной части программы в память (Init).
4. ДАННЫЕ И ФАЙЛЫ ДАННЫХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Данные резидентной части | ||
Old_09h | DWORD | Адрес старого обработчика прерывания 09h (прерывание BIOS) |
Old_2Fh | DWORD | Адрес старого обработчика мультиплексного прерывания 2Fh |
flag | Byte | Переменная, определяющая действие при нажатии пользователем на горячую клавишу |
F11 | Byte | 8500h - Скан-код горячей клавиши |
oldchar | Byte Array | Буфер для хранения старого шрифта |
newchar | Byte Array | Новый шрифт |
Данные инициализирующей части | ||
cParamLow | Byte | ‘u’ |
cParamUp | Byte | ‘U’ |
cParamHelp | Byte | ‘?’ |
sLoaded | Byte Array | Сообщение о том, что программа загружена резидентно в память |
sAlreadyHere | Byte Array | Сообщение о том, что программа уже загружена резидентно в память, и повторная загрузка запрещена |
sKilling | Byte Array | Сообщение о том, что программа успешно выгружена из памяти |
sWrongParam | Byte Array | Сообщение о неверном параметре командной строки |
sNotLoaded | Byte Array | Сообщение о том, что программа ещё не загружена, и ее нельзя выгрузить |
sHelp | Byte Array | Строка с подсказкой по использованию данной программы |
sCantKill | Byte Array | Сообщение о невозможности выгрузки программы из памяти |
-
ОСНОВНЫЕ АЛГОРИТМЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Описание алгоритма процедуры загрузки резидентной части в память (Init):
-
Проверить командную строку на присутствие команд выгрузки
-
Проверить, загружена ли программа в память
-
Если присутствует команда выгрузки, а программа не загружена – ошибка
-
Если отсутствует команда выгрузки, а программа загружена – ошибка
-
Если отсутствует команда выгрузки, а программа не загружена – загрузить резидентную часть программы в память
-
Если присутствует команда выгрузки, а программа загружена – проверить, не переопределены ли вектора прерываний другой программой
-
Если вектора переопределены – ошибка
-
Если вектора не переопределены – выгрузить резидентную часть программы
6. ПРОЦЕДУРЫ И ФУНКЦИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Название | Входные данные | Выходные данные | Описание |
Процедуры резидентной части | |||
New_2Fh | Вход: АН=0CDh AL=00 | AL=01 | AL=00h | AL=01h | AL=0Eh | Если AH=0CDh и AL=00h, то устанавливает AL в 01h и завершает обработку прерывания, возвращая управление пользователю. Если AH=0CDh и AL=01h, то проверяет, не перехвачены ли вектор прерывания другими программами и если нет, возвращает AL=00h, восстанавливает вектора прерываний и выгружает программу из ОП. В случае невозможности выгрузки возвращает AL=0Eh. Если AH и AL содержат какие-либо другие значения – просто вызывает старый обработчик данного прерывания. |
New_09h | отсутствуют | Изменился ли шрифт | Вызывает старый обработчик прерывания. Потом проверяет буфер клавиатуры и, если в нём содержится скан-код горячей клавиши, вызывает процедуру изменения шрифта. Удаляет скан-код горячей клавиши из буфера клавиатуры. |
SwapChars | flag | Изменился ли шрифт | Проверяет состояние переменной flag: 0 - сохраняет старый шрифт в буфере, заменяет шрифт на новый и присваивает flag:=2; 1 - заменяет шрифт на новый и присваивает flag:=2; 2 - заменяет шрифт на старый и присваивает flag:=1. |
CheckIfLast | Адреса старых и новых векторов прерываний | Возврат AL | Если адреса векторов прерываний и адреса новых процедур обработки прерываний не совпадают, то AL=0Eh. |
Процедуры инициализационной части | |||
Init | Командная строка | Загрузка программы в ОП, выгрузка программы из ОП или сообщение об ошибке | См. описание алгоритма процедуры Init (п. 5). |
CheckParams | Командная строка | Переход на соответствующие процедуры | Если в командной строке имеется неизвестный ключ, то выводится сообщение об ошибке. А если имеются ключи ‘/u’ или ‘/U’ или ‘/?’, то вызываются соответствующие процедуры. |
Try2Kill | отсутствуют | Выгрузка программы из ОП или сообщение об ошибке | Если нет уже запущенной копии программы, выдаётся сообщение об ошибке, и программа завершается. В противном случае производится попытка выгрузить резидентную часть первой копии. В зависимости от результата выдаётся сообщение. |
Work | отсутствуют | Переопределение векторов прерываний, оставление программы резидентной | Сохраняются старые и устанавливаются новые вектора прерываний 2Fh и 09h. Программа завершается и оставляется резидентной. |
Help | отсутствуют | Вывод справки о программе | Выводится справка по работе с программой. |
PrintStr | DX - смещение строки | Печать строки | Выводится строка с завершающим $ |
7. ВЕКТОРА ПРЕРЫВАНИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
09h - прерывание BIOS
2Fh - мультиплексное прерывание