Перекодирование текстового файла

Автор: Пользователь скрыл имя, 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 файл

курсовик Перекодирование текстового файла.doc

— 290.00 Кб (Скачать)

В приложении к документу "Рабочий проект" должен быть приведен листинг исходных текстов программного изделия.

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

Информация о работе Перекодирование текстового файла