Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Задание на лабораторную работу




Задание на лабораторную работу

Программа должна обрабатывать исходный текстовый файл с использованием функций DOS и формировать новый файл с результатами обработки исходного файла.

    Имя исходного и обработанного файлов задать в программе в виде ASCIIZ-строк.

    При обработке файла использовать следующую последовательность вызова функций DOS:

1. открытие исходного файла (функция 3DH);

2. создание нового файла, куда будут помещаться результаты обработки исходного файла (функция 3CH);

3. чтение исходного файла (функция 3FH);

4. обработка прочитанных данных;

5. запись обработанных данных в созданный файл (функция 40H);

6. закрытие файла с результатами обработки (функция 3EH);

7. закрытие исходного файла (функция 3EH).

    Для чтения данных из исходного файла может быть использован буфер, определенный в программе как массив байт или слов. Рекомендуемый размер буфера – 512 байт (256 слов). На шаге 4 обрабатываются данные, находящиеся в буфере, а на шаге 5 обработанные данные из буфера записываются в файл.

    Размер исходного файла для обработки выбрать меньшим или равным размеру буфера.

 

1. Преобразовать файл из кодировки DOS в кодировку Windows.

2. Преобразовать файл из кодировки Windows в кодировку DOS.

3. Заменить в исходном файле первые буквы слов на прописные.

4. Заменить в исходном файле последние две буквы слов на строчные.

5. Поменять в исходном файле буквы слов местами. Пример: windows ® swodniw.

6. Заменить в исходном файле пробелы на знаки подчеркивания: ‘_’. Если между словами несколько пробелов, заменить только те из них, которые стоят в начале и в конце слов.

7. Заменить в исходном файле английские буквы русскими: ‘a’® ‘а’, ‘b’® ‘б’, ‘c’® ‘ц’ и т. д.

8. Заменить в исходном файле русские буквы на английские: ‘а’® ‘a’, ‘б’® ‘b’, ‘в’® ‘v’ и т. д.

9. Заменить в исходном файле русские буквы ‘а’ на буквы ‘o’, буквы ‘о’ на буквы ‘а’, буквы ‘и’ на буквы ‘е’, буквы ‘е’ на буквы ‘и’.

10. Преобразовать исходный файл так, чтобы предложения начинались с прописной буквы.

11. Заменить в исходном файле четные буквы слов на прописные.

12. Заменить в исходном файле каждую третью букву слова на пробел.

13. Поменять в исходном файле местами соседние слова.

14. Поменять в исходном файле местами соседние строчки.

15. Заменить в исходном файле буквы слов-палиндромов на прописные.

16. Заменить в исходном файле предлоги «от» предлогами «до», предлоги «до» предлогами «от», частицы «не» союзами «но», союзы «но» частицами «не».

17. Заменить в исходном файле гласные буквы на строчные.

18. Заменить в исходном файле согласные буквы на прописные.

19. Заменить в исходном файле буквы слов, стоящих в скобках, прописными.

20. Заменить в исходном файле буквы слов, не стоящих в скобках, строчными.

Контрольные вопросы

1. Какие функции DOS для работы с файлами вы знаете?

2. Какие функции DOS для работы с каталогами вы знаете?

3. Что такое файловый номер и для чего он служит?

4. Каким образом можно вывести данные на стандартное устройство вывода, используя функцию DOS записи файла?

5. Как можно узнать причину ошибки выполнения функций DOS для работы с файлами?

6. Что произойдет при попытке записи в файл с атрибутом «только для чтения»?

7. Поясните механизм поиска файлов по шаблону.

 

 

Лабораторная работа №9

Архитектура сопроцессора

Цель работы: Изучить архитектуру сопроцессора. Освоить основные команды сопроцессора (команды загрузки данных, арифметические команды и команды трансцендентных функций, команды сравнения данных, команды управления сопроцессором). Изучить способы определения наличия сопроцессора. Научиться работать с сопроцессором.

 

    Все арифметические команды МП 8086 работают с целочисленными операндами. Но иногда возникает необходимость обрабатывать вещественные числа и использовать более сложные математические операции, чем сложение, вычитание, умножение и деление. Такие операции можно выполнять при использовании специального программного обеспечения, существенно замедляющего работу программы. Также для выполнения вычислений с использованием вещественных чисел к МП 8086 имеется возможность подключить специальный математический сопроцессор, который имеет большой набор различных математических операций и функций и достаточно быстро выполняет обработку вещественных чисел.

Начиная с МП 80486DX, сопроцессоры включаются в состав кристалла процессора. Сопроцессор обычно обозначается как FPU (Floating Point Unit) или как NPX (Numeric Processor eXtension).

Наличие сопроцессора позволяет значительно ускорить работу программ, выполняющих расчеты с высокой точностью, тригонометрические вычисления и обработку информации, которая должна быть представлена в виде действительных чисел.

    Перед использованием сопроцессора необходимо определить его наличие в компьютере. Это актуально для процессоров 8086, 80286, 80386 и 80486 SX. В старших моделей процессоров сопроцессор уже присутствует непосредственно в кристалле процессора. Существует несколько способов определения наличия сопроцессора. Каждый способ имеет свои достоинства и недостатки, а также определенную надежность определения наличия сопроцессора. Под надежностью определения наличия сопроцессора понимается вероятность того, что конкретный способ правильно определит наличие сопроцессора. Далее рассмотрены способы определения наличия сопроцессора.

    1. Чтение слова области данных BIOS. Это слово расположено в памяти по абсолютному адресу 0410H (сегмент 0040H и смещение 0010H). Если в прочтенном слове бит 1 установлен, то сопроцессор есть, если этот бит сброшен, сопроцессор отсутствует. Как показывает практика, такой способ определения наличия сопроцессора ненадежен. Очевидно, это происходит из-за несоблюдения соглашений по содержанию информации в области данных BIOS его разработчиками. Достоинством же данного способа является его простота. Пример определения наличия сопроцессора с использованием данного способа:

MOV AX, 0040H

MOV ES, AX         ; настройка ES на область данных BIOS

TEST BYTE PTR ES: 0010H, 0002H          ; проверка 1-го бита

JZ None

. . .                  ; сопроцессор присутствует

None:

. . .                  ; сопроцессор отсутствует

    2. Чтение информации о конфигурации компьютера. Этот способ зависит от типа ПК. В XT и некоторых моделях AT информация о конфигурации хранится в регистрах микросхемы 8255. Эта микросхема имеет три однобайтовых регистра A, B и C с номерами соответствующих портов 60H, 61H и 62H. Для того чтобы считать содержимое из порта C, в котором хранится информация о конфигурации, необходимо предварительно установить бит 3 порта B. Если в считанном из порта C байте бит 1 установлен, то сопроцессор есть, в противном случае он отсутствует. Следующий пример показывает определение наличия сопроцессора с использованием данного способа.

IN AL, 61H                      ; чтение из порта B

OR AL, 00001000B         ; установка 3-го бита

OUT 61H, AL                  ; запись в порт B

IN AL, 62H                 ; чтение из порта C

TEST AL, 00000010B; проверка 1-го бита

JZ None

. . .                            ; сопроцессор присутствует

None:

. . .                            ; сопроцессор отсутствует

Достоинством способа является надежность его работы в старых моделях компьютеров (XT), в отличие от первого способа. Недостатком способа является то, что на старших моделях компьютеров он не всегда работает.

    3. Вызов прерывания 11H, возвращающего информацию об оборудовании. Этот способ полностью аналогичен первому рассмотренному способу, так как прерывание 11H возвращает в регистре AX слово из области данных BIOS по адресу 0410H. Пример:

INT 11H                 ; вызов прерывания 11H

TEST AL, 00000010B; проверка 1-го бита

JZ None

. . .                            ; сопроцессор присутствует

None:

. . .                            ; сопроцессор отсутствует

 

    4. Чтение управляющего регистра сопроцессора. Этот способ основан на том, что если сопроцессор присутствует, то в его управляющем регистре будут установлены определенные биты. Для реализации этого способа нужно сначала попытаться инициализировать сопроцессор командой FINIT, а затем прочесть содержимое его управляющего регистра. При инициализации сопроцессора, если он присутствует, в управляющий регистр записывается определенный код. Для выделения из управляющего регистра определенных бит используется маска 0F3FH. Этой маской выделяются биты управления точностью результатов выполнения арифметических операций (с восьмого по одиннадцатый) и биты управления маскированием исключительных ситуаций (с нулевого по пятый). Выделенное значение должно быть равно 033FH или, в двоичном представлении 0000001100111111B. Если это не так, то сопроцессора нет. Достоинством этого метода является возможность определения типа сопроцессора, так как разные сопроцессоры после инициализации возвращают отличающуюся информацию, например в 15-ом разряде регистра управления. Пример использования данного способа:

CrtlReg DW?                    ; определение данных

. . .

FINIT                               ; инициализация сопроцессора

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...