Автор: Пользователь скрыл имя, 02 Мая 2012 в 17:54, курсовая работа
Целью создания программного продукта данной курсовой работы является изучение принципов работы резидентных программ, строения и управления памятью, взаимодействия с аппаратными средствами персонального компьютера.
1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 5
1.1 Введение 5
1.2 Основания для разработки 6
1.3 Назначение разработки 6
1.3.1 Функциональное и эксплуатационное назначение изделия 6
1.3.2 Перечень требований пользователя к программному продукту 7
1.3.3 Рассмотренные альтернативы 7
1.4 Требования к программе или программному изделию 7
1.4.1 Стандарты 7
1.4.2 Требования к составу и параметрам технических средств 7
1.4.3 Требования к информационной и программной совместимости 8
1.4.4 Требования к функциональным характеристикам 8
1.4.5 Результирующие компоненты изделия 9
1.4.6 Носители информации 9
1.4.7 Безопасность и секретность 9
1.4.8 Рестарт 9
1.4.9 Удобства эксплуатации 9
1.4.10 Мобильность 10
1.5 Требования к программной документации 10
1.6 Стадии и этапы разработки 11
1.7 Порядок контроля и приемки 11
2 ТЕХНИЧЕСКИЙ ПРОЕКТ 12
2.1 Анализ области 12
2.2 Структура программы 12
2.2.1 Модуль cur.asm 12
3 РАБОЧИЙ ПРОЕКТ 15
3.1 Введение 15
3.2 Назначение разработки 15
3.3 Требования к программе или программному изделию 15
3.3.1 Стандарты 15
3.3.2 Требования к составу и параметрам технических средств 15
3.3.3 Требования к информационной и программной совместимости 16
3.3.4 Результирующие компоненты изделия 16
3.3.5 Безопасность и секретность 16
3.3.6 Рестарт 16
3.4 Описание модуля cur.asm 17
3.4.1 Структура модуля 17
3.4.2 Описание подпрограмм 18
3.5 Тестирование 21
3.5.1 Цель испытаний 21
3.5.2 Тесты 22
Список использованных источников 24
Приложения 25
В приложении к документу "Рабочий проект" должен быть приведен листинг исходных текстов программного изделия.
1.6 Стадии и этапы разработки
Выполнение разработки должно включать три стадии:
1) техническое задание;
2) технический проект;
3) рабочий проект.
На стадии "Техническое задание" проводится постановка задачи, разработка требований к программному изделию, изучение литературы по задаче и оформление документа "Техническое задание".
На стадии "Технический проект" проводится анализ данной предметной области, выделение основных взаимодействий между пользователем, выяснение структуры программного комплекса, активной программой и резидентом. В заключение данного этапа оформляется документ "Технический проект".
На стадии "Рабочий проект" проводится разработка схем алгоритмов для каждого из функциональных модулей, физическое проектирование программного изделия, разработка тестов, тестирование и отладка программных модулей. В заключение данного этапа оформляется документ "Рабочий проект".
1.7 Порядок контроля и приемки
Приемка программного изделия осуществляется при сдаче документально оформленных этапов разработки и проведении испытаний на основе установленных тестов. Тесты должны быть разработаны на этапе рабочего проектирования программного изделия.
2 ТЕХНИЧЕСКИЙ ПРОЕКТ
2.1 Анализ области
Программа содержит резидентную часть. Вследствие этого необходима проверка на присутствие резидентной части в памяти и корректной выгрузки резидента.
Стандартное использование программного продукта состоит в следующей последовательности действий пользователя:
1) загрузка резидента, запуск «cur.com», при этом, чтобы предотвратить повторную загрузку, проверяется присутствие резидента в памяти;
2) ввод данных;
3) выполнение работы;
4) завершение работы резидента, с освобождением занимаемой им памяти;
2.2 Структура программы
Программа состоит из одного модуля.
Модуль cur.asm, который содержит в себе все функции транзитной и резидентной части.
2.2.1 Модуль cur.asm
Транзитная часть – программа, которая исполняет следующие функции:
1) проверка на повторную загрузку;
2) загрузка резидента в память;
3) сохранение входных параметров;
4) выгрузка резидента из памяти.
Резидентная часть – программа, которая исполняет следующие функции:
1) выполнение функции резидента, а именно вывод перекодированного текстового файла;
Входные данные
Входных данных для транзитной части нет.
Входными данными для резидентной части нет.
Выходные данные
Для транзитной части в процессе ее работы выходными данными будут сообщения о загрузке резидента в память: «Rezident is load.», а также сообщение при выгрузки резидента «Rezident is unload.».
В резидентной части выходными данными будет перекодированный текстовый файл.
Процессы обработки
Процесс обработки транзитной части заключает в себе:
1) проверка на повторную загрузку будет осуществляться путем переопределения одной из функций мультиплексного прерывания 2Fh.
2) передача управления резидентной части посредством вызова ее как подпрограммы;
3) переопределение мультиплексного прерывания int 2Fh для выгрузки резидента из памяти;
Методические ограничения
В модуле не используется методологически сложных операций и все процессы обработки являются в общем виде работой с прерываниями и памятью компьютера.
Аппаратные ограничения
Для работы программного модуля необходимо дисковое пространство в размере не менее 5 кБ, свободная оперативная память в размере не менее 1МБ, а также микропроцессор 80486 или выше.
3 РАБОЧИЙ ПРОЕКТ
3.1 Введение
В данном программном изделии используются технологии работы с использованием портов ввода вывода (средства BIOS).
3.2 Назначение разработки
Программное изделие можно использовать в работе с операционной системой DOS. При помощи данного программного продукта можно находить каталоги на диске A с наименьшей датой.
3.3 Требования к программе или программному изделию
3.3.1 Стандарты
Программное изделие выполнено согласно стандартам, указанным в техническом задании в пункте 1.4.1.
3.3.2 Требования к составу и параметрам технических средств
Программное изделие работает на компьютере, совместимом с IBM PC. Программа не требовательна к оперативной памяти.
Вся информация вводится при помощи клавиатуры 101/102. Контроль информации осуществляется при помощи дисплея с видеорежимом 40/80-25.
3.3.3 Требования к информационной и программной совместимости
Программное изделие написано на языке Ассемблер для компилятора TurboAssemler 3.1, и работает под управлением операционной системы MS-DOS и виртуальной машины DOS в операционной системе Windows 95 – XP.
3.3.4 Результирующие компоненты изделия
Согласно пункту 1.4.6. технического задания все файлы программы предоставляются на дискете формата 3,5 дюйма.
3.3.5 Безопасность и секретность
Данный программный продукт не является секретным и не требует защиты, поэтому ограничение доступа к нему не предусматривается.
3.3.6 Рестарт
В случае, когда программа по внешним причинам перестает отвечать на запросы пользователя, необходимо:
в системе DOS нажать комбинацию клавиш «CTRL+ALT+DEL» и средствами операционной системы прервать программу
в виртуальной машине DOS операционной системы Windows просто закрыть окно.
и затем заново запустить ее согласно пункту 1.4.8. технического задания.
3.4 Описание модуля cur.asm
3.4.1 Структура модуля
Общая статическая схема резидента
Общая статическая схема резидента представлена на рисунке 3.1.
Рисунок 3.1 – Общая статическая схема резидента
3.4.2 Описание подпрограмм
Подпрограмма new_2Fh
Входные данные: ах – номер функции.
Выходные данные: нет.
Процессы обработки: происходит сравнение регистров общего назначения на предмет наличия определенного значения. Если значение регистра ax равно 0c801h, то производится выгрузку резидентной части и восстановление старого прерывания. В противном случае, вызывается системный обработчик прерывания int 2fh.
Используемые регистры: AX, DX, DI, DS, ES, CS.
Используемые внешние переменные: old_2Fh.
Подпрограмма iniz
Входные данные: нет.
Выходные данные: нет.
Процессы обработки: являясь секцией инициализации резидента, процедура осуществляет проверку на повторную загрузку резидента, используя внешнюю переменную, с уникальным значением, инсталляцию резидента в память, передачу данных резиденту с использованием вектора свободного прерывания, передачу управления резиденту посредством его вызова как подпрограммы, вывод информационных сообщений.
Используемые регистры: AX, BX, DX, DS, ES, CS, DS, DI.
Используемые внешние переменные: old_2Fh, mess1, mess3.
Блок-схема подпрограммы представлена на рисунке 3.4.
Рисунок 3.2 Блок-схема подпрограммы iniz
Описание используемых функций DOS
Функция 09h int 21h – вывод строки на экран
Вход:
AH = 09h;
DS:DX – адрес выводимой строки, которая должна заканчиваться служебным символом '$'.
Функция 01h int 21h – ввод символа с эхом
Вход:
AH = 01h.
Выход:
AL – ASCII-код введенного символа.
Функция 02h int 21h – вывод символа на экран в позиции курсора
Вход:
AH = 02h.
Выход:
DL – ASCII-код выводимого символа.
Функция 0Ch int 21h – сброс входного буфера
Вход:
AH = 0Сh.
Функция 25h int 21h – установить вектор прерывания
Вход:
AH = 25h;
AL – номер прерывания;
DS:DX – адрес программы обработки прерывания.
Функция 35h int 21h – получить вектор прерывания
Вход:
AH = 35h;
AL – номер прерывания.
Выход:
ES:BX – адрес программы обработки прерывания.
Функция 31h int 21h – завершить работу программы и оставить в памяти
Вход:
AH = 31h;
AL – код выхода;
DX – размер программы в параграфах.
Функция 49h int 21h – освободить выделенный блок памяти
Вход:
AH = 49h;
ES – сегментный адрес (параграф) освобождаемого блока памяти.
Выход:
Функция 4Ch int 21h – завершить работу
Вход:
AH = 4Ch;
AL – код выхода.
Функция 00h int 1Ah – считать значение счетчика времени
Вход:
AH = 00h.
Выход:
CX:DX – значение счетчика;
AL – байт переполнения счетчика.
Текст подпрограмм
Cм. приложение А.
3.5 Тестирование
3.5.1 Цель испытаний
Выяснить поведение программы в различных ситуациях, созданных пользователем.
3.5.2 Тесты
Тест №1
Действия: первый запуск резидентной программы.
Реакция программы: выводится уведомление об установке резидента. См. рисунок 3.3.
Рисунок 3.3 Тест №1
Тест №2
Действия: выгрузка резидента.
Реакция программы: выводится уведомление о выгрузке резидента. См. рисунок 3.4.
Рисунок 3.4 Тест №2
1 Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение. – Питер, 2003. – 736 с.
2 Зубков С. В. Assembler для DOS, Windows и UNIX. – М.: ДМК, 2000. – 608 с.
3 Кулаков В. Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. – СПб.: Питер, 2003. – 847 с. ил.
4 Финогенов К. Г., Самоучитель по системным функциям MS DOS. –3-е изд., – М.: Горячая линия – Телеком, 2001. – 382с.
5 Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера. – М.: Диалог-МИФИ, 1997. – 304 с (БСП т.33).
6 Юров В. И. Assembler. Учебник для вузов.2-е изд. – СПб.: Питер, 2006. – 637 с.: ил.
Приложение А
Листинг файла cur.lst
Turbo Assembler Version 4.1 20/12/10 12:28:19 Page 1
arrays.ASM
1 0000 .model tiny
2 0000 .code
3 .486
4 org 100h
5 0100 main proc far
6 0100 E9 0242 jmp iniz
7 0103 00000000 old_2Fh dd 0 ; систем. адрес int 2Fh
8 0107 00000000 old_60h dd 0 ; систем. адрес int 2Fh
9 010B CD E5 F2 20 EF E0 F0+ TEXT1 DB 'Нет параметров.',13,10,'$'
10 E0 EC E5 F2 F0 EE E2+
11 2E 0D 0A 24
12 011D D4 E0 E9 EB 20 ED E5+ TEXT2 DB 'Файл не найден.',13,10,'$'
13 20 ED E0 E9 E4 E5 ED+
14 2E 0D 0A 24
15 012F 50*(00) PATH DB 80 DUP(0) ;путь к файлу
16 017F A0*(??) BUF DB 160 DUP(?) ;буфер для чтения файла
17
18
19 021F new_2Fh:
20 ;new_2Fh proc
21
22 021F 3D C800 cmp ax,0C800h
23 0222 74 0B 90 90 jz ins
24 0226 3C 01 cmp al,01
25 0228 74 0E 90 90 jz uninstall
26 022C EB 04 90 jmp out_2Fh
27 022F ins:
*Warning* arrays.ASM(23) Reserved word used as symbol: INS