
- •Содержание
- •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.3. Команды ввода-вывода.
Для связи с разными частями ЭВМ и управления ими микропроцессор использует порты ввода-вывода. Любой порт идентифицируется шестнадцатиразрядным номером порта в диапазоне от 0 до 65535. Как и при доступе к памяти, процессор для связи использует шины данных и адреса. При доступе к порту он посылает сначала по управляющей шине сигнал, который оповещает все устройства ввода-вывода, что адрес на шине является адресом определенного порта, а затем посылает сам адрес. То устройство, адрес порта которого совпадает, дает ответ. Номер порта - это адрес ячейки памяти, являющейся частью устройства ввода-вывода, а не частью основной памяти. Для указания на доступ к порту и пересылки информации к устройствам ввода-вывода и обратно, используются специальные команды ввода-вывода.
IN - передает данные (байт, слово или двойное слово ) из исходного порта в аккумулятор (AL, AX или EAX).
OUT - передает данные из аккумулятора в исходный порт.
Номер порта можно указывать либо в самой команде, либо в регистре DX(0-65535).
Примеры использования команд ввода-вывода приведены в таблице 2.5.
Таблица 2.5. Примеры использования команд ввода-вывода.
Команда |
Байт |
Слово |
Дв. Слово |
IN (непосредственная, операнд) |
IN AL, 20h |
IN AX, 20h |
IN EAX, 20h |
OUT(непосредственная, операнд) |
OUT 20h, AL |
OUT 20h, AX |
OUT 20h, EAX |
IN (регистр) |
IN AL, DX |
IN AX, DX |
IN EAX, EDX |
OUT(регистр) |
OUT DX, AL |
OUT DX, AX |
OUT EDX, EAX |
2.5.1.4. Адресные команды (пересылки адреса)
В микропроцессоре существуют три основные команды пересылки адреса: LEA, LDS, LES.
LEA - загрузить смещение в регистр. Форматы команды:
LEA
LDS -загрузить полный адрес в DS и регистр;
LES - загрузить полный адрес (указатель) в ES и регистр.
С микропроцессора 80386 в систему команд добавляются команды LSS, LFS, LGS, которые используются для загрузки полного адреса в регистр-приемник и регистры SS, FS, GS соответственно. Форматы команд LDS, LES, LSS, LFS, LGS:
Каждая из команд имеет два операнда - один в памяти, другой в 16-битном регистре или 32-битном регистре. Примеры использования команд:
LEA BX, MEMLOC=MOV BX, OFFSET MEMLOC
LDS CX, MEMLOC
LES DX, MEMLOC
LEA вычисляет 16-битное или 32-битное смещение операнда-источника и загружает его в любой 16-битный или 32-битный регистр общего назначения или в регистр смещения ( кроме IP). Она удобна для передачи смещения переменной в качестве параметра из одной процедуры в другую. В качестве операнда-источника в команде LEA может быть элемент массива, например: LEA BX, TABLE[DI].
LDS передает полный адрес операнда-источника в 16-битный или 32-битный регистр (любой регистр общего назначения) и в регистр DS.
HERE DB 100 |
|
== |
|
MOV BX, OFFSET HERE |
LDS BX, HERE |
|
|
|
MOV AX, SEG HERE |
|
|
|
|
MOV DS, AX |
LES, LSS, LFS, LGS аналогичны LDS, но загружают адрес сегмента в регистры ES, SS, FS, GS соответственно.
Замечание: 32-разрядная адресация используется только в защищенном режиме работы микропроцессора. В реальном режиме работы команды используют только 16-битные регистры.