- •Содержание
- •1.Введение в архитектуру эвм. 5
- •2.Архитектура реального режима работы м/п семейства 8086 19
- •3.Директивы и операторы ассемблера 81
- •4.Архитектура и система команд арифметического сопроцессора 91
- •5.Варианты контрольных работ 131
- •6.Примеры программ 138
- •1.Введение в архитектуру эвм.
- •2.Архитектура реального режима работы м/п семейства 8086
- •2.1.Форматы данных микропроцессора
- •2.1.1.Числа
- •2.1.2.Символы
- •2.1.3.Указатели
- •2.1.4.Цепочки
- •2.2.Адресация памяти
- •2.3.Внутренние регистры процессора
- •2.3.1.Регистры общего назначения
- •2.3.2.Сегментные регистры
- •2.3.3.Регистры смещения
- •2.3.4.Регистр флагов
- •2.4.Режимы адресации
- •2.4.5.Базовая адресация
- •2.5.1.1. Общие команды.
- •2.5.1.2. Команды push и pop .
- •2.5.1.3. Команды ввода-вывода.
- •2.5.1.4. Адресные команды (пересылки адреса)
- •2.5.1.5. Флажковые команды (команды пересылки флагов).
- •2.5.2.Арифметические команды.
- •2.5.2.1. Команды сложения.
- •2.5.2.2.Команды вычитания.
- •2.5.2.3.Команды умножения и деления.
- •2.5.2.4.Команды расширения знака.
- •2.5.2.5.Десятичная арифметика.
- •2.5.3.Логические команды.
- •2.5.3.1.Булевы команды.
- •2.5.3.2.Команды сдвигов.
- •2.5.3.3.Команды циклических сдвигов.
- •2.5.3.4.Команды двойного сдвига
- •2.5.3.5.Команды работы с двоичными цепочками
- •2.5.4.Команды передачи управления.
- •2.5.4.1.Команды безусловной передачи управления.
- •2.5.4.2. Команды условных переходов.
- •2.5.4.3.Команды SetCondition
- •2.5.5.Цепочечные (строковые) команды.
- •2.5.5.1.Команды пересылки цепочки.
- •2.5.5.2.Команды сравнения цепочек.
- •2.5.5.3.Команды сканирования цепочек.
- •2.5.5.4.Команды загрузки.
- •2.5.5.5.Команды ввода и вывода цепочек.
- •2.5.5.6.Замена сегмента.
- •2.5.6.Команды управления микропроцессором.
- •2.5.6.1.Команды управления флагами.
- •2.5.6.2.Команды синхронизации.
- •2.5.6.3.Команда холостого хода.
- •2.5.6.4.Команды прерываний.
- •2.5.7.Новые команды микропроцессора 80486
- •3.Директивы и операторы ассемблера
- •3.1.Структура программы
- •3.2.Организация программы.
- •3.2.1. Модели памяти
- •3.2.2. Процедуры
- •3.2.3. Директивы задания набора допустимых команд
- •3.3.Примеры использования директив в программах типа .Exe и .Com.
- •4.Архитектура и система команд арифметического сопроцессора
- •4.1.Форматы чисел сопроцессора
- •4.1.1.`Целые числа
- •4.1.2. Вещественные числа
- •4.1.3.Диапазоны вещественных чисел в х87.
- •4.2.Особые случаи вещественной арифметики
- •4.3.Формирование специальных значений в особых случаях
- •4.3.1. Случай неточного результата.
- •4.3.2.Численное антипереполнение.
- •4.3.3. Денормализованный операнд.
- •4.3.4. Деление на ноль.
- •4.3.5.Численное переполнение.
- •4.3.6.Недействительная операция.
- •4.4.Регистры математического сопроцессора.
- •4.4.1.Численные регистры (регистровый стек).
- •4.4.2.Регистр управления (cw)
- •4.4.3.Регистр состояния.
- •4.4.4. Регистр тэгов (признаков).
- •4.4.5.Указатели особого случая.
- •4.5.Система команд арифметического сопроцессора.
- •4.5.1.Команды передачи данных.
- •4.5.2.Арифметические команды
- •4.5.3.Дополнительные арифметические команды
- •4.5.4.Команды сравнений
- •4.5.5.Трансцендентные команды
- •4.5.6.Административные команды
- •4.6.Совместная работа двух процессоров в системе.
- •4.6.1.Синхронизация по командам.
- •4.6.2.Синхронизация по данным.
- •5.Варианты контрольных работ
- •5.1.Контрольная работа №1
- •5.2. Контрольная работа №2
- •6.Примеры программ
- •Список рекомендуемой литературы
4.1.3.Диапазоны вещественных чисел в х87.
Внутреннее представление нормализованных чисел:
-
Min число < 0
Max число < 0
знак
порядок
мантисса
знак
Порядок
Мантисса
1
1...10
11...1
1
0…01
00…0
+1
+1
Min число > 0
Max число < 0
Знак
порядок
мантисса
знак
порядок
Мантисса
0
0...01
00...0
0
1…10
11…1
+1
+1
Единица подразумевается в старшем разряде мантиссы для чисел в формате с одинарной и двойной точностью. Дивпазоны представлеения десятичных чисел в двоичных вещественных форматах:
а) с одинарной точностью:
-3.37*1038/ -1.17*10-37
+1.17*10-37 / +3.37*1038
б) с двойной точностью:
-1.67*10308/ -2.23*10-307
+2.23*10-307/ +1.67*10308
в) с расширенной точностью:
-1.2*104932/ -3.37*10-4931
+3.37*10-4931/ +1.2*104932
4.2.Особые случаи вещественной арифметики
При реализации операций с вещественными числами возникают внутренние прерывания сопроцессора, называемыми особыми случаями сопроцессора (ОС). Если результат арифметической операции меньше минимального отрицательного числа или больше максимального положительного числа в данном формате, то такое состояние называется переполнением.
Если результат арифметической операции меньше минимального положительного числа и больше максимального отрицательного числа в данном формате, то такое состояние называется антипереполнением.
Сопроцессор генерирует шесть особых случаев вещественной арифметики:
1. Неточный результат. Возникает, когда результат операции невозможно точно представить в формате приемника. Например, при делении 1 на 3 получается бесконечная дробь;
2. Численное антипереполнение. Ненулевой результат слишком мал по абсолютной величине для представления в формате приемника. Например, при делении 1 на максимальное число с расширенной точностью 1.2*104932получается очень маленькое число, которое не может быть представлено в формате с расширенной точностью. В данном случае результатом является денормализованное число. Денормализованными называются числа с плавающей точкой, имеющие в поле порядка все нули и нулевой старший бит мантиссы.
3. Денормализованный операнд. Возникает, когда операндом команды оказывается денормализованное число.
4. Деление на ноль. Результатом операции является бесконечность.
5. Численное переполнение. Возникает, когда результат слишком велик по абсолютной величине, чтобы быть представленным в формате приемника. Например, при сложении двух максимальных чисел в формате с расширенной точностью.
6. Недействительная операция. Включает в себя все арифметические операции, при которых нет приемлемого результата. Например, при делении нуля на ноль, при извлечении квадратного корня из отрицательного числа.
Обычная обработка особых случаев заключается в том, чтобы немедленно остановить операцию и передать управление процедуре обработки особого случая (внутреннего прерывания процессора).
Второй подход состоит в том, чтобы заставить операцию возвратить специальное значение особого случая и продолжить вычисления.
Оба подхода применяются в арифметическом сопроцессоре, программист может сам выбрать режим обработки особых случаев вещественной арифметики. При инициализации сопроцессора по умолчанию устанавливается режим формирования специальных значений. Для формирования специальных значений можно использовать числа с минимальными и максимальными значениями порядков в каждом формате, что не сильно сокращает диапазон значений нормализованных чисел. Кроме того, наборы специальных значений выбраны так, что большинство сравнений на равенство или неравенство выполняется правильно (эти сравнения редки для плавающей арифметики). Сделано это для того, чтобы при получении в качестве промежуточных результатов специальных значений, программа имела возможность сформировать правильный окончательный результат.