- •Содержание
- •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.4.2.Регистр управления (cw)
Предназначен для управления работой сопроцессора. Имеет размер – 16 бит.
15 13 |
12 |
11-10 |
9-8 |
7 6 |
5 |
4 |
3 |
2 |
1 |
0 | ||
|
IC |
RC |
PC |
|
PM |
UM |
OM |
ZM |
DM |
IM | ||
IM -маска недействительной операции |
= 0 - прерывания |
| ||||||||||
DM -маска денормализованного операнда |
разрешены |
| ||||||||||
ZM -маска деления на нуль |
= 1 – формирование |
| ||||||||||
OM -маска переполнения |
специальных значений |
| ||||||||||
UM -маска антипереполнения |
|
| ||||||||||
PM -маска неточного результата |
|
|
PC - поле управления точностью:
11 - расширенная точность (по умолчанию);
10 - двойная точность;
00 - одинарная точность.
RC - поле управления округлением:
00 - к ближайшему числу (по умолчанию);
01 - округление к минус бесконечности;
10 - округление к плюс бесконечности;
11 - округление к нулю.
IC - поле управления бесконечностью: (для 80287)
0 - проективный режим (по умолчанию);
1 - аффинный режим.
С 80387 не используется - по умолчанию всегда аффинный режим.
4.4.3.Регистр состояния.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 | |
B |
C3 |
|
ST |
|
C2 |
C1 |
C0 |
ES |
SF |
PE |
UE |
OE |
ZE |
DE |
IF | |
|
|
|
|
|
|
|
|
|
Флагстека |
флаги особых случаев |
Флаги (0-6 биты):
IE- недействительная операция;
DE - денормализованный операнд;
ZE - деление на нуль;
OE – переполнение;
UE – антипереполнение;
PE - точность (неточный результат);
SF- флаг стека (с 80387 сопроцессора).
При возникновении особого случая, не зависимо от того, замаскирован он или нет, автоматически выставляется флаг особого случая, равный единице. Явно сбросить флаги должен программист, загружая в регистр состояния новое значение соответствующих флагов.
ES - бит суммарной ошибки, устанавливается в единицу, когда команда порождает любой особый случай. C0, C1, C2, C3- коды условий, являющиеся результатом сравнения или команды нахождения остатка. Интерпретация кодов условий зависит от конкретной команды.
ST - поле вершины стека, содержит физический номер регистра, являющийся вершиной стека.
B - бит занятости, равен единице, когда процессор выполняет команду или сигнализирует прерывание, если сопроцессор свободен, то B равен нулю. Бит занятости показывает занятость численного операционного устройства сопроцессора, в которое входит числовой стек и регистр тэгов.
4.4.4. Регистр тэгов (признаков).
15 |
1413 |
1211 |
109 |
87 |
65 |
43 |
21 |
0 | |||||||
ТэгR7 |
ТэгR6 |
ТэгR5 |
ТэгR4 |
ТэгR3 |
ТэгR2 |
ТэгR1 |
ТэгR0 |
Каждое поле соответствует состоянию численного регистра (соответствие устанавливается на уровне физических имен регистров - RO:R7):
00 – в регистре действительное число (любое конечное число , не равное нулю, ненормализованное число считается действительным в 80287);
01 – нуль;
10 - недействительное число (нечисло, бесконечность, денормализованное число или ненормализованное число в 80387 и последующих версиях устройства с плавающей точкой);
11 - пустой регистр.
Регистр считается пустым, если он не был инициализирован, или его содержимое было “извлечено” из стека. Процессор использует это состояние тэга для обнаружения переполнения стека (слишком много включений) или антипереполнения стека (слишком много извлечений). При попытке извлечь число из пустого регистра возникает особый случай недействительной операции. Когда этот особый случай замаскирован (прерывания запрещены), процессор корректирует ST обычным способом и возвращает неопределенность как результат операции.