- •3 Методическое пособие для лабораторных работ по курсу «Организация эвм и периферийные устройства» Оглавление
- •1.Введение в архитектуру эвм.
- •1.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.4.4 Команды управления циклами.
- •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.5.7.Замена сегмента.
- •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.Примеры программ
- •Список рекомендуемой литературы
4.3.6.Недействительная операция.
Возникает, когда нет приемлемого результата в арифметической операции, операции сравнения или при стековых операциях (при этом флаг SF в регистре состояния равен единице):
при реализации операций сложения, вычитания, умножения и деления может возникнуть особый случай недействительной операции (например, при запрещенных операциях с бесконечностью);
- при реализации операции сравнения результатом является код условия. Обычно он показывает отношения “<”, “=”, “>”. Если при этом возникает особый случай недействительной операции (например, в проективном режиме при сравнении бесконечности и конечного числа, или при сравнении нечисла и конечного числа), то код условия принимает специальное значение “не сравнимы”. При этом нарушается закон трихотомии арифметики : . Это вызывает трудности в языках высокого уровня при исполнении оператора IF, так как, например, отрицанием условия больше или равно является не только меньше, но и “не сравнимы”;.
особый случай стека: переполнение, то есть попытка включения числа в заполненный стек или антипереполнение, то есть попытка извлечения числа из пустого стека;
Во всех случаях результатом недействительной операции будет нечисло (NAN).
Нечисло – это двоичное вещественное число, у которого в поле порядка все единицы, а в поле мантиссы - все, кроме значения, зарезервированного за бесконечностью, то есть 1.000000...0.
Если один или оба операнда в операции -нечисло - то результатом тоже является нечисло. Таким образом, полученное в промежуточном результате операции нечисло распространяется в вычислениях и выдается как окончательный результат.
Особый случай нечисла - неопределенность. Сопроцессор формирует неопределенность как результат недействительной операции (остальные нечисла формируются программистом).
Для вещественных чисел неопределенность - это нечисло у которого в поле мантиссы две старшие цифры – единицы, а все остальные – нули (1.1...00), а поле порядка одни единицы (11...11). Поле знака также равно единице.
Для формата десятичных чисел неопределенность имеет следующее представление :
Знак |
1 |
2 |
3 |
4 |
мусор |
79 |
75 - 78 |
71 - 74 |
67 - 70 |
63 - 66 |
0 - 62 |
1 |
1111 |
1111 |
1111 |
1111 |
хх...хх |
Десятичную неопределенность нельзя преобразовать в вещественное число, результат при этом - неопределенность.
Для двоичных целых форматов неопределенность представляется максимальным по модулю отрицательным числом, то есть имеет код
1 |
0000...00 |
Знак |
|
Целочисленная неопределенность при преобразовании в формат с плавающей точкой дает обычное отрицательное число.
Попытка преобразования нечисла, денормализованного, ненормализованного числа или бесконечности в формат целых чисел вызывает особый случай недействительной операции, результатом которой и является неопределенность.
4.4.Регистры математического сопроцессора.
4.4.1.Численные регистры (регистровый стек).
Предназначен для выполнения вычислительных операций. Регистровый стек состоит из восьми регистров по 80 бит каждый, в которых представлены вещественные числа в расширенном формате. Адресация численных регистров реализована следующим образом: логический номер регистра, указанного в команде, процессор суммирует с содержимым поля ST (вершина стека) в регистре состояний. Сумма по модулю 8 определяет используемый численный регистр. Для удобства математических расчетов код и результат операции могут замещать значения операндов и использоваться дальше в вычислениях.
|
101 |
|
79 |
78 |
63 |
0 |
| ||||
---|---|---|---|---|---|---|---|---|---|---|---|
ST |
5 |
|
R0 |
S |
E |
M |
ST(3) | ||||
|
R1 |
|
ST(4) | ||||||||
в слове |
|
R2 |
|
ST(5) | |||||||
Состояния |
|
R3 |
|
ST(6) | |||||||
|
|
R4 |
|
ST(7) | |||||||
|
R5 |
Вершина |
ST(0) или ST | ||||||||
|
|
R6 |
|
ST(1) | |||||||
|
R7 |
|
ST(2) |
Числовой стек имеет кольцевую организацию. Если стек заполнен полностью, то есть ST = 111, то операция включения в стек вызывает перезапись в вершину стека ST = 000 ( при обработке особых случаев сопроцессора посредством обращения к системе пррываний центрального процессора) или особый случай недействительной операции (при формировании специальных значений в особых случаях сопроцессора).