Контрольные вопросы. Задания. 10. Архитектура сопроцессора. 10. 1 определение наличия сопроцессора
Контрольные вопросы 1. Какие функции DOS для работы с файлами вы знаете? 2. Какие функции DOS для работы с каталогами вы знаете? 3. Что такое файловый номер и для чего он служит? 4. Каким образом можно вывести данные на стандартное устройство вывода, используя функцию DOS записи файла? 5. Как можно узнать причину ошибки выполнения функций DOS для работы с файлами? 6. Что произойдет при попытке записи в файл с атрибутом «только для чтения»? 7. Поясните механизм поиска файлов по шаблону. Задания 1. Преобразовать файл из кодировки DOS в кодировку Windows. 2. Заменить в исходном файле последние две буквы слов на строчные. 3. Поменять в исходном файле буквы слов местами. Пример: windows ® swodniw. 4. Заменить в исходном файле английские буквы русскими: ‘a’® ‘а’, ‘b’® ‘б’, ‘c’® ‘ц’ и т. д. 5. Преобразовать исходный файл так, чтобы предложения начинались с прописной буквы. 6. Заменить в исходном файле четные буквы слов на прописные. 7. Заменить в исходном файле каждую третью букву слова на пробел. 8. Заменить в исходном файле предлоги «от» предлогами «до», предлоги «до» предлогами «от», частицы «не» союзами «но», союзы «но» частицами «не». 9. Заменить в исходном файле гласные буквы на строчные. 10. Заменить в исходном файле буквы слов, стоящих в скобках, прописными. Имя исходного и обработанного файлов задать в программе в виде ASCIIZ-строк. Размер исходного файла для обработки выбрать меньшим или равным размеру буфера.
10. АРХИТЕКТУРА СОПРОЦЕССОРА Все арифметические команды МП 8086 работают с целочисленными операндами. Но иногда возникает необходимость обрабатывать вещественные числа и использовать более сложные математические операции, чем сложение, вычитание, умножение и деление. Такие операции можно выполнять при использовании специального программного обеспечения, существенно замедляющего работу программы. Также для выполнения вычислений с использованием вещественных чисел к МП 8086 имеется возможность подключить специальный математический сопроцессор, который имеет большой набор различных математических операций и функций и достаточно быстро выполняет обработку вещественных чисел.
Начиная с МП 80486DX, сопроцессоры включаются в состав кристалла процессора. Для более ранних моделей процессоров сопроцессор вставляется в специальное гнездо на материнской плате. Название модели сопроцессора совпадает с названием модели соответствующего процессора, например сопроцессор 8087 соответствует процессору 8086, 80287 – 80286 и т. д. Сопроцессор обычно обозначается как FPU (Floating Point Unit) или как NPX (Numeric Processor eXtension). Наличие сопроцессора позволяет значительно ускорить работу программ, выполняющих расчеты с высокой точностью, тригонометрические вычисления и обработку информации, которая должна быть представлена в виде действительных чисел.
10. 1 Определение наличия сопроцессора Перед использованием сопроцессора необходимо определить его наличие в компьютере. Это актуально для процессоров 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|