- •Вычисление некоторых элементарных функций с помощью сопроцессора.
- •Принципы работы
- •Префикс команд и адресация операндов
- •Форматы данных
- •Вещественные числа
- •Целые числа
- •Регистры сопроцессора
- •Численные регистры
- •Регистр управления
- •Регистр тегов
- •Регистр состояния
- •Регистры указателя команды и указателя операнда
- •Система команд сопроцессора
- •Ввод с клавиатуры и вывод данных на экран с помощью функций dos.
- •Сравнительная характеристика функций dos ввода с клавиатуры
- •Функции dos вывода данных на экран
- •ФункцииBios для работы с клавиатурой. Чтение символа с ожиданием
- •Проверка буфера на наличие в нем символов
- •Получение состояния переключающих клавиш
- •Установка временных характеристик клавиатуры
- •Запись символов в буфер клавиатуры
- •Чтение символа с ожиданием для 101-клавишной клавиатуры
- •Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
- •Получение состояния переключающих клавиш для 101-клавишной клавиатуры
- •Получение состояния переключающих клавиш для 101-клавишной клавиатуры
- •Функции bios для работы с экраном
- •Функции работы с памятью.
- •Описание:
Регистр состояния
Обозначение битов и их порядок в регистре состояния:
IE,нулевой;
DE,первый;
ZE,второй;
OE,третий;
UE,четвертый;
PE,пятый;
ES,седьмой ;
C0,восьмой;
C1,девятый;
C2,десятый;
ST,одиннадцатый, двенадцатый, тринадцатый;
C3,четырнадцатый;
B, пятнадцатый.
Шестой бит не используется.
В регистре состояния биты 0-5 - флажки особых случаев. Они устанавливаются всегда при возникновении особых случаев, даже замаскированных установкой в 1 соответствующих битов регистра управления.
Ниже приведена таблица флажков особых случаев:
IE - Недействительная операция
DE - Денормализованный результат
ZE - Деление на нуль
OE - Переполнение
UE - Антипереполнение
PE - Неточный результат
Для того, чтобы сбросить установившийся флажок, программа должна явным образом установить его в нуль, выполнив команду записи в регистр состояния.
Сопроцессоры 80287/80387 и встроенные сопроцессоры процессоров 486 и выше используют бит 7 в качестве флага суммарной ошибки, который устанавливается в 1 при возникновении незамаскированного особого случая.
Биты C0, C1, C2, C3 - это коды условий. Они определяются по результату выполнения команд сравнения и команды нахождения остатка.
Поле ST занимает три бита 11, 12, 13 и содержит номер численного регистра, являющегося вершиной стека численных регистров.
Бит B - бит занятости. Он устанавливается в 1, когда процессор выполняет команду или когда происходит прерывание от сопроцессора. Если сопроцессор свободен, бит занятости установлен в 0.
Регистры указателя команды и указателя операнда
Регистры указателя команды и указателя операнда предназначены для обработки особых случаев, возникающих при работе сопроцессора.
В сопроцессоре 8087 указатель команды содержит 20-разрядный адрес команды, вызвавшей особый случай и код выполняемой в этот момент операции. Адрес команды здесь указывается без учета предшествующих команде префиксов
Сопроцессоры 80287/80387 и встроенные сопроцессоры процессоров 486 и выше в реальном режиме работы имеют такой же формат регистра указателя команд, однако этот указатель показывает на первый префикс команды, вызвавшей особый случай.
В защищенном режиме адрес состоит из селектора и смещения. Код операции здесь отсутствует, но его легко получить, пользуясь адресом команды.
Если при возникновении особого случая использовался операнд, находящийся в оперативной памяти, его адрес записывается в регистр указателя операнда.
Система команд сопроцессора
Возможны три формата команд сопроцессора, аналогичные форматам команд центральных процессоров фирмы Intel. Это команды с обращением к оперативной памяти, команды с обращением к одному из численных регистров и команды без операндов, заданных явным образом.
Команды с обращением к памяти могут занимать от двух до четырех байт, в зависимости от способа адресации.
Все ассемблерные мнемоники команд сопроцесора начинаются с буквы F, поэтому их легко отличить от команд центрального процессора.
Команды сопроцессора можно разделить на несколько групп:
команды пересылки данных;
арифметические команды;
команды сравнений чисел;
трансцендентные команды;
управляющие команды
Команды пересылки данных предназначены для загрузки чисел из оперативной памяти в численные регистры, записи данных из численных регистров в оперативную память, копирования данных из одного численного регистра в другой.
Арифметические команды выполняют такие операции, как сложение, вычитание, умножение, деление, извлечение квадратного корня, нахождение частичного остатка, округление и т.п.
Команды сравнения сравнивают вещественные и целые числа, выполняют анализ чисел.
Трансцендентные команды предназначены для вычисления различных тригонометрических, логорифмических, показательных и гиперболических функций - sin, cos, tg и тому подобных.
Последняя группа команд - управляющие команды. Они обеспечивают установку режима работы арифметического сопроцессора, его сброс и инициализацию, перевод сопроцессора в защищенный режим работы и так далее.
