
- •Команды и директивы
- •Общая структура программы на ассемблере
- •Основные элементы языка ассемблер:
- •Прямая адресация
- •Базовые команды передачи управления
- •Косвенный ближний (внутрисегментный) переход
- •Переходы по условию
- •Команды перехода по условию
- •Цикл со счетчиком
- •Процедуры
- •Доступ к параметрам
- •Средства обработки чисел с плавающей запятой
- •Архитектура сопроцессора
- •Форматы команд
Средства обработки чисел с плавающей запятой
Математический сопроцессор можно рассматривать как средство для обработки чисел с плавающей запятой, представляющее собой выделенное вычислительное устройство. Сопроцессор можно рассматривать как второй процессор, работающий параллельно с основным процессором. Его функциональное назначение представляет собой расширение вычислительных возможностей основного процессора, что позволяет значительно повысить производительность ПК, так сопроцессор освобождает процессор от других работ. Сопроцессор добавляет следующие возможности:
поддержку стандарта IEEE-754 на арифметику с плавающей запятой. Этот стандарт описывает формат данных, с которыми должен работать сопроцессор и набор реализуемых им функций
сопроцессор выполняет трансцендентные операции, то есть поддержку в численных алгоритмах для определения значений тригонометрических функций и логарифмов с большой точностью
сопроцессор предназначен для обработки для чисел с точностью до 18 степени
Сопроцессор используется системой для получения графики, для передачи данных при синтезе звука, при вводе/выводе данных с диска.
Типы данных для сопроцессора
Кроме обычных чисел предусматриваются следующие специальные форматы: положительный ноль, отрицательный ноль, положительная и отрицательная бесконечность, денормализованное число (все виды экспоненты сброшенные в ноль) – эти числа используется для представления очень маленького числа при вычислениях с расширенной точностью, неопределенность – для 80-разрядных чисел.
Архитектура сопроцессора
Сопроцессор имеет 8 отдельно-адресуемых 80-разрядных регистров. Эти регистры составляют основу программной модели сопроцессора – стек сопроцессора. Особенности регистров: регистры данных не адресуются по именам, обращаться напрямую к ним нельзя, если процессор поддерживает расширение MMX, То мантиссы, находящиеся в этих регистрах становятся доступными. Регистр стека с функциональной точки зрения абсолютно одинаковый и равноправный. Данные регистры рассматриваются в качестве стека, вершина которого называется ST, а более глубокие элементы ST1,ST2 и так далее. Стек носит название – круговой и вершина данного стека TOP является плавающей, а принцип его работы аналогичен обычному калькулятору, то есть любая команда загрузки данных сопроцессора автоматически перемещает вершину стека. Контроль за вершиной стека осуществляется аппаратно с помощью 3-битового поля. 3 служебных регистра: регистр состояния сопроцессора – отражает информацию о текущем состоянии и о том, как выполняется та или иная арифметическая команда. Говорят, что данный регистр содержит слово состояния; управляющий регистр сопроцессора – этот регистр распоряжается режимами работы сопроцессора, то есть определяет вариант обработки вещественных чисел. Программист может задать точность вычисления, способ округления, интерпретацию бесконечности посредством формирования в оперативной памяти нудного ему слова. Исключения – это особые ситуации, которые могут возникнуть при выполнении команд сопроцессора: ошибка стека, деление на ноль, умножение нуля на бесконечность, тригонометрические операции над бесконечностью, вычисление корней и логарифмов из отрицательного числа. Сопроцессор самостоятельно реагирует на эти исключения, обрабатывая их по умолчанию. Для того, чтобы заказать сопроцессору обработку определенного типа исключения, необходимо это исключение замаскировать, то есть установить единицу в нужный бит управляющего регистра, хотя при это следует помнить, что возникшее программное исключение изменяет содержимое бита регистра управления независимо от того, замаскировано исключение или нет. Регистр тегов служит для контроля за состоянием каждого из регистров данных. Изменение состояния любого регистра отражается на состоянии соответствующего регистра тегов. Два этих регистра предназначены для заполнения информации об адресах команд, вызвавших исключительную ситуацию и адресах её операндов. Все перечисленные регистры программно доступны, поэтому сопроцессор рассматривают как набор дополнительных регистров, для работы с которыми предназначены специальные команды. Однако, получить доступ к одним регистрам легко, а к другим более сложно.