- •Содержание
- •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.Примеры программ
- •Список рекомендуемой литературы
2.5.1.5. Флажковые команды (команды пересылки флагов).
Команды этого класса обеспечивают доступ к флагам процессора.
Команды LAHF (загрузить флаги в AH) и SAHF (запомнить AH во флагах). LAHF передает 5 флагов SF, ZF, AF, PF и CF в определенные биты регистра AH, а SAHF - реализует противоположную передачу. На рисунке 2.1 показано соответствие флагов разрядам регистра AH.
SF |
ZF |
|
AF |
|
PF |
|
CF |
флаги |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
AH |
Рисунок 2.1. Соответствие флагов разрядам регистра AH.
Эти флаги выделены потому, что они были в микропроцессоре 8080. LAHF и SAHF предусмотрены в основном, для преобразования программ микропроцессора 8080 в программы микропроцессора 8086. Команда SAHF оказалась полезной при использовании арифметического сопроцессора для использования результатов расчета в команде условного перехода.
Существуют команды для пересылки содержимого регистра флагов в стек и обратно. Это команды PUSHF (включить в стек флаги) и POPF (извлечь из стека флаги). Рисунок 2.2 иллюстрирует работу этих команд.
Младшие адреса |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
SF |
ZF |
|
AF |
|
PF |
|
CF |
|
|
NT |
IO |
PL |
OF |
DF |
IF |
TF |
Старшие адреса |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Рисунок 2.2. Размещение в стеке флагов после команды PUHF.
Начиная с микропроцессора 80386 добавляются команды PUSHFD и POPFD для 32-битного регистра EFLAGS.
PUSHFD- включает в стек 32-разрядный регистр флагов.
POPFD - извлекает из стека 32-разрядный регистр флагов.
2.5.2.Арифметические команды.
Перечень арифметических команд приведен в таблице 2.6.
Таблица 2.6. Перечень арифметических команд.
Мнемоника команд |
Описание команды |
Сложение |
|
ADD - сложение |
приемник + источник приемник |
ADC - сложить с переносом |
приемник + источник + CF приемник |
INC - увеличить на 1 |
приемник + 1 приемник |
. Вычитание |
|
SUB - вычесть |
приемник - источник приемник |
SBB - вычесть с займом |
приемник - источник - CF приемник |
DEC - уменьшить на 1 |
приемник - 1 приемник |
NEG - изменить знак |
0 - приемник приемник |
CMP - сравнить |
приемник - источник |
Умножение |
|
MUL - умножить |
AL * источник (8) AX |
|
AX * источник (16) DX, AX |
IMUL - умножить со знаком |
так же, как и в команде MUL, но операнды со знаком |
Деление. |
|
DIV - разделить |
AX/источник (8): целая часть AL, остатокAH |
|
[DX, AX]/источник (16): целая часть AX, остатокDX |
IDIV - разделить со знаком |
так же, как и в команде DIV, но операнды со знаком |
Команды расширения |
|
CBW - преобразовать байт в слово |
знаковый бит AL в AH |
CWD - преобразовать слово в двойное слово |
знаковый бит AX в DX |
CWDE - преобразовать слово в расширенное двойное слово |
знаковый бит AX в EAX |
CDQ - преобразовать двойное слово в учетверенное двойное слово |
знаковый бит EAX в EDX |
В арифметических командах устанавливаются или сбрасываются 6 флажков состояния:
CF - устанавливается, если операция дала беззнаковый результат вне диапазона (т.е. есть перенос в знаковый разряд). Заём (7,15,31) вызывает выход из разрядной сетки.
OF - устанавливается, если в операции получился знаковый результат, находящийся вне диапазона (т.е. перенос в знаковый разряд) не создаёт переноса из разрядной сетки или перенос из разрядной сетки происходит без переноса в знаковый разряд.
ZF - устанавливается, если результат операции (знаковый или беззнаковый) равен нулю.
SF - устанавливается, если старший бит результата операции содержит 1, показывая отрицательное число.
PF - устанавливается, если результат операции содержит четное число единичных битов.
AF - устанавливается, если в десятичных операциях требуется коррекция.