- •А. В. Поздняков, б. Я. Цилькер микропроцессоры и микропроцессорные системы
- •Часть 1
- •(Учебное пособие)
- •Содержание
- •1. Микропроцессорные системы
- •1.1. Историческая справка
- •1.2. Архитектура мпс с магистрально-модульной организацией
- •1.3. Режимы работы мпс
- •2.1. Центральный процессор
- •2.1.1. Классификация микропроцессоров
- •2. Микропроцессорный модуль
- •2.1.2. Структура центрального процессора
- •2.1.2.1. Краткая характеристика микропроцессора Intel 8086
- •2.1.2.2. Архитектура микропроцессора Intel 8086
- •2.1.2.3. Программная модель микропроцессора Intel 8086
- •2.1.2.4. Представление информации в мп Intel 8086
- •2.1.2.5. Способы адресации операндов в мп Intel 8086
- •2.1.2.6. Система команд мп Intel 8086
- •2.1.2.7. Содержание цикла команды, типовые машинные циклы мп Intel 8086
- •2.1.2.8. Входные и выходные сигналы мп Intel 8086
- •2.2. Сопроцессор
- •2.3. Генератор тактовых импульсов
- •2.4. Системный контроллер
- •2.5. Согласующие элементы микропроцессорных систем
- •2.5.1. Шинные формирователи
- •2.5.2. Буферные регистры
- •2.6. Контроллер прерываний
- •2.7. Контроллер прямого доступа к памяти
- •2.8. Программируемый таймер
- •3. Модуль памяти
- •3.1. Организация модуля памяти
- •3.2. Распределение адресного пространства зу
- •3.3. Декодирование старших разрядов адреса.
- •3.3.1. Декодирование адресов методом линейной выборки
- •3.3.2. Декодирование адресов с помощью логических компараторов
- •3.3.3. Декодирование адресов с применением комбинационных логических схем
- •3.4. Выбор типа зу
- •3.5. Функциональная схема модуля памяти
- •3.6. Обеспечение необходимой емкости зу
- •3.6.1. Увеличение разрядности зу
- •3.6.2. Увеличение адресного пространства зу
- •4. Модуль ввода-вывода
- •4.1. Интерфейс ввода-вывода
- •4.2. Параллельные порты
- •4.2.1. Параллельный порт вывода
- •4.2.2. Параллельный порт ввода
- •4.2.3. Параллельные порты ввода-вывода
- •4.3. Последовательные порты
- •4.3.1. Последовательный асинхронный порт вывода
- •4.3.2. Последовательный асинхронный порт ввода
- •4.3.3. Программируемый последовательный интерфейс
- •4.4. Организация обращения к портам ввода/вывода
- •4.4.1. Обращение к портам ввода/вывода с помощью специальных команд
- •4.4.2. Обращение к портам ввода/вывода с помощью команд пересылок
- •4.5. Способы организации ввода/ вывода информации в мпс
- •4.5.1. Организация ввода/вывода информации под управлением основной программы
- •4.5.2. Организация ввода/вывода в режиме прерывания программы
- •4.5.3. Организация ввода/вывода в режиме прямого доступа к памяти
- •Система команд микропроцессора Intel 8086 Команды пересылки данных
- •Арифметические команды
- •Логические команды
- •Команды передачи управления
- •Команды управления процессором
- •Команды обработки строк
- •Литература
Команды передачи управления
Команды передачи управления включают команды безусловных и условных переходов, команды вызова и возврата из подпрограмм. Команды этой группы не оказывают влияния на содержимое регистра флагов. Перечень команд приведен в табл. П.4. В таблице использованы следующие условные обозначения:
op – операнд;
i8, i16, – 8- и 16-разрядные константы находящиеся непосредственно в командах;
r16 – имя регистра РОН, содержащего 16-разрядный операнд;
m16, m32 – адрес ячейки памяти, содержащей 16- или 32-разрядный операнд;
H(op) – старшие 16 разрядов операнда;
L(op) – младшие 16 разрядов операнда;
CF – флаг переноса;
SF – флаг знака;
ZF – флаг нуля;
OF – флаг переполнения;
PF – флаг четности.
Таблица П.4. Команды передачи управления
Мнемоника |
Операция |
Допустимые значения операндов |
Описание команды |
Команды безусловного перехода |
|||
JMP op |
IP :=IP+ op |
i8, i16, |
Безусловный переход (jump) |
JMP op |
IP := [op] |
r16, m16 |
Безусловный переход косвенный |
JMP op |
CS := [op+2] IP := [op] |
m32 |
Дальний косвенный переход |
Команды вызова и возврата из подпрограмм |
|||
CALL op |
SP:=(SP-2) mod 216 IP[SS:SP] IP := op |
i16 |
Вызов процедуры (близкий) |
CALL op |
SP:=(SP-2) mod 216 CS[SS:SP] SP:=(SP-2) mod 216 IP[SS:SP] CS := H(op) IP := L(op) |
i32 |
Вызов процедуры (дальний) |
RET |
[SS:SP] IP SP:=(SP+2) mod 216 |
|
Возврат (близкий) из процедуры (return) |
RET |
[SS:SP] IP SP:=(SP+2) mod 216 [SS:SP] CS SP:=(SP+2) mod 216 |
|
Возврат (дальний) из процедуры (return) |
RET op |
стекIP {стекCS} SP :=SP+ op |
i16 |
Возврат из процедуры и увеличение указателя стека |
Команды условного перехода |
|||
JC op |
Если CF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если есть перенос (CF=1) |
JNC op |
Если CF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если нет переноса (CF=0) |
JS op |
Если SF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если результат отрицательный (SF=1) |
JNS op |
Если SF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если результат положительный (SF=0) |
JE op JZ op |
Если ZF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если операнды равны/результат равен нулю (ZF=1) |
JNE op JNZ op |
Если ZF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если операнды не равны/результат не равен нулю (ZF=0) |
JO op |
Если OF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если есть переполнение (OF=1) |
JN op |
Если OF=0, то IP:=IP+ op, иначе IP:=IP+2
|
i8 |
Переход, если нет переполнения (OF=0) |
JP op JPE op |
Если PF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если количество единиц четное (PF=1) |
JNP op JPO op |
Если PF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если количество единиц нечетное (PF=0) |
JL op JNGE op |
Если SFOF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число со знаком меньше (не больше и не равно) |
JGE op JNL op |
Если SFOF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число со знаком больше или равно (не меньше) |
JLE op JNG op |
Если (SFOF)ZF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число со знаком меньше или равно (не больше) |
JG op JNLE op |
Если (SFOF)ZF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число со знаком больше (не меньше и не равно) |
JB op JN op |
Если CF=1, то IP:=IP+ op, иначе IP:=IP+2
|
i8 |
Переход, если число без знака меньше (не больше и не равно) |
JAE op JNB op |
Если CF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число без знака больше или равно (не меньше) |
JBE op JNA op |
Если CFZF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число без знака меньше или равно (не больше) |
JA op JNBE op |
Если CFZF=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если число без знака больше (не меньше и не равно) |
Команды, предназначенные для организации циклов |
|||
LOOP op |
CX:=CX-1 Если CX0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Управление циклом по счетчику (переход, если CX0) |
LOOPE op LOOPZ op |
CX:=CX-1 Если (CX0) ZF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Цикл по счетчику и пока равно (пока ноль) |
LOOPNZ op |
CX:=CX-1 Если (CX0) ZF=1, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Цикл по счетчику и пока не равно (пока не ноль) |
JCXZ op |
Если CX=0, то IP:=IP+ op, иначе IP:=IP+2 |
i8 |
Переход, если CX=0 (jump if CX is zero) |

LOOPNE
op