
- •Содержание
- •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.4.5.Базовая адресация
При этом способе адресации смещение адреса операнда образуется как сумма:
[BX] + сдвиг, если операнд в сегменте данных(DS);
[BP] + сдвиг, если операнд в стеке (SS).
Базовый адрес массива (записи) помещается в регистр BX или BP, а сдвиг указывает на элемент относительно базы. Для доступа к разным записям или к элементам разных массивов внутри массива достаточно только перегрузить регистр BX (BP).
Примеры базовой адресации:
MOV AX, [BX] + 4
MOV AX, [BX + 4].
2.4.6.Прямая адресация с индексированием
При такой адресации смещение адреса операнда образуется как сумма значений смещения ячейки памяти и смещения в регистре SI или DI. Данный способ используется для доступа к массивам данных. Например:
.data
T DB 6, 5, 4, 3
MOV DI, 3
MOV AL, T[DI] - Загружает в AL 3-й элемент массива T, т.е. 4.
При операциях со строками регистр DI по умолчанию указывает на дополнительный сегмент данных (CS).
2.4.7.Базовая адресация с индексированием
Смещение адреса операнда образуется как сумма трех компонент:
BX + SI + сдвиг или BX + DI + сдвиг, если операнд находится в основном сегменте данных (DS),
BP + SI + сдвиг или BP + DI + сдвиг, если операнд находится в сегменте стека (SS).
Удобен для адресации двумерных массивов, когда BX или BP содержат смещение адреса начала массива, а в индексных регистрах и сдвиге - индексы элементов по строке и столбцу, например:
MOV AX, [BX + DI + 2]
MOV AX, [DI + BX + 2]
MOV AX, T[DI][SI]
2.5.Система команд микропроцессора
Система команд микропроцессора обычно делится на семь групп команд:
Команды пересылки данных.
Арифметические команды.
Логические команды или команды манипулирования битами.
Команды передачи управления.
Команды обработки строк (цепочные команды).
Команды управления процессором.
Команды прерывания.
2.5.1.Команды пересылки данных.
Перечень команд пересылки данных приведен в таблице 2.1.
Таблица 2.1. Перечень команд пересылки данных.
Мнемоника команды |
Описание команды |
Общие |
|
MOV (переслать) |
источник - приемник |
MOVSX (c м/п 80386) |
источник - приемник |
MOVZX ( c м/п 80386) |
источник - приемник |
XCHG (обменять) |
источник - приемник |
PUSH (включить в стек) |
источник - стек |
POP (извлечь из стека) |
стек - приемник |
PUSHA (включить в стек все) |
регистры - стек |
POPA (извлечь из стека все) |
стек - регистры |
XLAT (преобразовать) |
M[AL] > AL |
Аккумуляторные (ввода-вывода) |
|
IN (ввести) |
Порт AL или AX |
OUT (вывести) |
AL или AX порт |
XLAT (преобразовать) |
f(AL) AL |
Адресные |
|
LEA (смещение) |
Смещение источника регистр |
LDS (загрузить полный адрес в регистр DS) |
Источник, источник + 1 регистр |
|
Источник + 2, источник + 3 DS |
LES (загрузить полный адрес в регистр ES) |
Источник, источник + 1 регистр |
|
Источник + 2, источник + 3 ES |
LSS (c м/п 80386) |
|
LFS (c м/п 80386) |
|
LGS (c м/п 80386) |
|
Флажковые |
|
LAHF (загрузить флажки в AH) |
SF, ZF, AF, PF, CF AH |
SAHF (запомнить AH во флажках) |
AH SF, ZF, AF, PF, CF |
PUSHF (включить в стек флажки) |
Флаги стек |
POPF (извлечь из стека флажки) |
Стек флаги |