техническое описание (1071551)
Текст из файла
Московский Государственный Университет имени Н.Э. Баумана.
УТВЕРЖДАЮ
"___"__________1999 г.
_____________________
(Большаков С.А.)
Программа "Резидентные часы"
Техническое описание
(тип документа)
Бумага формата А4
(вид носителя)
5
(количество листов)
ИСПОЛНИТЕЛЬ
" " 1999 г.
_____________________
(Бидяк И.Н.)
Москва – 1999
СОДЕРЖАНИЕ
-
Общие сведения
-
Данные программы
-
Процедуры и функции программы
-
Переопределяемые в программе вектора прерываний
1. Общие сведения.
Язык программирования: Ассемблер
Компилятор: Turbo Assembler Version 3.1 Copyright (c) 1988, 1992 Borland Int.
Компоновщик: Turbo Link Version 5.1 Copyright (c) 1992 Borland Int.
Исполняемый файл: clock.com (1789 байт)
Объём резидентной части: 592 байта.
2. Данные программы
Данные резидентной части | ||
Video_Memory_Start | DWORD | Адрес начала видеопамяти |
Time_String | Byte Array | Строка, в которой будет формироваться и потом выводится на экран текущее время |
Temp_String | Byte Array | Строка, в которой будет хранится та часть видеопамяти, которую мы разрущаем при выводе часов |
Old_09_Vector | DWORD | Адрес старого обработчика прерывания 09h (низкоуровневый интерфейс с клавиатурой) |
Old_2F_Vector | DWORD | Адрес старого обработчика прерывания 2Fh (мультиплексор) |
Old_1C_Vector | DWORD | Адрес старого обработчика прерывания 1Ch (пользовательский таймер) |
Exit_Code | BYTE | Код завершения программы (тот, что она возвращает по завершении работы) |
Clock_Status | BYTE | Состояние часов ( 0 – часы скрыты, 1 – часы видны) |
Switch_Key | BYTE | Скан-код буквенно-цифровой клавиши, которой мы переключаем режим отображения часов (видны/не видны) |
Данные нерезидентной (инициализирующей) части | ||
ProgramAlreadyLoadedMessage | Byte Array | Сообщение о том, что программа уже загружена в память |
ProgramLoadedMessage | Byte Array | Сообщение о том, что программа загружена резидентно в память |
MemoryIsFreeMessage | Byte Array | Сообщение о том, что программа успешно выгружена из памяти |
CannotUnloadProgramMessage | Byte Array | Сообщение о невозможности выгрузки программы из памяти |
HelpString | Byte Array | Строка с подсказкой по использованию данной программы |
UnloadParameter | Byte Array | Строка, содержащая параметр, который обозначает "выгрузку программы из памяти" |
HelpParameter | Byte Array | Строка, содержащая параметр, который обозначает "показать помошь" |
Register_Flag | BYTE | Флаг игнорирования регистра (в функции IsParameter). Если = 0, то функция должна игнорировать регистр символов. Если = 1, то функция должна учитывать регистр символов. |
Parameter_Copy | Byte Array | Внутренняя (для функции IsParameter) копия строки с искомым параметром. |
Command_Line_Copy | Byte Array | Внутренняя (для функции IsParameter) копия командной строки. |
3. Процедуры и функции программы
Название | Входные данные | Выходные данные | Описание |
Initialize | Параметры командной строки | Нет | Анализирует параметры командной строки, выдает соответствующие сообщения, производит загрузку резидента |
New_09_Vector | Нажатая пользователем комбинация клавиш и текущее значение флага видимости часов | Новое значени флага видимости часов и запомненная (или восстановленная) область видеопамяти | Новый обработчик прерывания 09h. Получает нажатую пользователем комбинацию клавиш и если она соответствует заданной, то меняет значение флага видимости часов на противоположное. При смене состояния с "не видны" на "видны" также запоминает область экрана, куда будут выводится часы. При смене состояния с "видны" на "не видны" – восстанавливает ту область экрана, где показывались часы. После выполнения необходимых действий возвращает управление старому обработчику прерывания 09h |
New_2F_Vector | AH=0BDh AL=0 | Al=1 | AL=0 | AL= 0FFh | AL=01h & BP=CS | Если AH==0BD и AL==00h, то устанавливает AL в 0FFh и завершает обработку прерывания, возвращая управление пользователю. Если AH==0BDh и AL==01h, то устанавливает в BP значение своего CS и завершает обработку прерывания, возвращая управление пользователю. Если AH и AL содержат какие-либо другие значения – просто вызывает старый обработчик данного прерывания. |
New_1C_Vector | Флаг видимости часов | Показанные или нет часы | Если флаг видимости часов установлен в "видны", то получает текущее системное время, записывает его в строку Time_String и выводит эту строку желтыми символами на черном фоне в левый верхний угол экрана. Если флаг видимости часов установлен в "не видны", то ничего не делает. После выполнения необходимых действий возвращает управление старому обработчику прерывания 1Ch |
IsParameter | DS:DX – адрес ASCIIZ строки с параметром, который надо искать AL=0 – если надо игнорировать регистр символов и любое другое значение если нет | CF=CN – указанный параметр не найден в командной строке CF=CY – указанный параметр найден в командной строке | Ищет в командной строке строку с параметром, адрес которой передан в DS:DX. Поиск может производится с игнорированием и без игнорирования регистра символов. В случае, если указанный параметр найден, флаг переноса устанавливается. Если указанный параметр не найден – флаг переноса сбрасывается. |
UnloadProgramFromMemory | Нет | Нет | Если возможно, то выгружает программу из памяти и освобождает занятую ей память. Если нельзя выгрузить, то выдает сообщение о невозможности выгрузки программы из памяти. |
FinishProgram | Cs:Exit_Code | Нет | Устанавливает код выхода из программы в значение, содержащееся в переменной Exit_Code, и вызывает системную функцию завершения программы (без оставления резидентной в памяти). |
KeepProgram | Cs:Exit_Code DX = размер резидентной части в параграфах | Нет | Устанавливает код выхода из программы в значение, содержащееся в переменной Exit_Code, и вызывает системную функцию оставления программы резидентной в памяти. |
Install_New_09_Handler | Нет | Нет | Получает и запоминает адрес старого обрабочика прерывания 09h, а потом устанавливает адрес нового обработчика прерывания 09h на функцию New_09_Handler. |
Install_New_2F_Handler | Нет | Нет | Получает и запоминает адрес старого обрабочика прерывания 2Fh, а потом устанавливает адрес нового обработчика прерывания 2Fh на функцию New_2F_Handler. |
Install_New_1C_Handler | Нет | Нет | Получает и запоминает адрес старого обрабочика прерывания 1Ch, а потом устанавливает адрес нового обработчика прерывания 1Ch на функцию New_1C_Handler. |
4. Переопределяемые в программе вектора прерывания:
09h - аппаратное прерывания клавиатуры
1Ch - прерывание таймера пользователя
2Fh - прерывание мультиплексора
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.