- •А. В. Поздняков, б. Я. Цилькер микропроцессоры и микропроцессорные системы
- •Часть 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 Команды пересылки данных
- •Арифметические команды
- •Логические команды
- •Команды передачи управления
- •Команды управления процессором
- •Команды обработки строк
- •Литература
Команды управления процессором
Команды управления процессором представлены в табл. П.5. В таблице использованы следующие условные обозначения:
op – 8-разрядный номер вектора прерываний, принимающий значения в диапазоне 0-255;
op1 – 8-разрядный код операции для внешнего процессора;
op2 – операнд для внешнего процессора, определяемый стандартным способом адресации.
Таблица П.5. Команды управления процессором
Мнемоника |
Операция |
Описание команды |
CLC |
CF:=0 |
Очистка флага переноса (clear carry flag) |
STC |
CF:=1 |
Установка флага переноса (set carry flag) |
|
CF:=CF |
Инвертирование флага переноса (complement carry flag) |
CLI |
IF:=0 |
Очистка флага прерывания (clear interrupt flag) |
STI |
IF:=1 |
Установка флага прерывания (set interrupt flag) |
CLD |
DF:=0 |
Очистка флага направления (clear direct flag) |
STD |
DF:=1 |
Установка флага направления (set direct flag) |
INTO |
|
Прерывание по переполнению (interrupt if overflow) |
INT 3 |
|
Прерывание с использованием вектора 3 (прерывание по контрольной точке) |
INT op |
|
Прерывание с использованием вектора op |
IRET |
|
Возврат после обработки прерывания |
LOCK |
|
Блокировка шины (lock the bus) |
HLT |
|
Останов (halt) |
WAIT |
|
Переход в состояние ожидания внешних событий |
ESC op1, op2 |
|
Переключение на сопроцессор (escape) |
NOP |
IP:=IP+1 |
“Пустая” команда (no operation) |
Команда NOP не выполняет никаких действий и обычно применяется для формирования фиксированной временной задержки, кратной длительности четырех тактов.
Команда HLT прекращает выполнение программы и переводит МП в состояние “Останов”, из которого он может быть выведен сигналом запроса прерывания или сигналом RESET на входе МП. Программа всегда должна заканчиваться командой HLT.
Команды обработки строк
Команды обработки строк представлены в табл. П.6. В таблице использованы следующие условные обозначения:
B – байт;
W – слово;
DF – флаг направления;
minstr – общее обозначение команд MOVSB, MOVSW, STOSB или STOSW;
cinstr – общее обозначение команд CMPSB, CMPSW, SCASB или SCASW.
Таблица П.6. Команды обработки строк
Мнемоника |
Операция |
Размер операн-дов |
Описание команды |
MOVSB |
[DS:SI][ES:DI] SI :=SI+1; DI :=DI+1 при DF=0 или SI :=SI-1; DI :=DI-1 при DF=1 |
B |
Пересылка строки (move string) |
MOVSW |
[DS:SI][ES:DI] SI :=SI+2; DI :=DI+2 при DF=0 или SI :=SI-2; DI :=DI-2 при DF=1 |
W |
Пересылка строки (move string) |
STOSB |
[ES:DI]:= AL DI :=DI+1 при DF=0 или DI :=DI-1 при DF=1 |
B |
Сохранение строки (store string) |
STOSW |
[ES:DI]:= AX DI :=DI+2 при DF=0 или DI :=DI-2 при DF=1 |
W |
Сохранение строки (store string) |
LODSB |
AL:= [ES:SI] SI :=SI+1 при DF=0 или SI :=SI-1 при DF=1 |
B |
Загрузка строки (load string) |
LODSW |
AX:= [ES:SI] SI :=SI+2 при DF=0 или SI :=SI-2 при DF=1 |
W |
Загрузка строки (load string) |
CMPSB |
[ES:SI]- [ES:DI] SI :=SI+1; DI :=DI+1 при DF=0 или SI :=SI-1; DI :=DI-1 при DF=1 |
B |
Сравнение строк из байтов (compare string) |
CMPSW |
[ES:SI]- [ES:DI] SI :=SI+2; DI :=DI+2 при DF=0 или SI :=SI-2; DI :=DI-2 при DF=1 |
W |
Сравнение строк из слов (compare string) |
SCASB |
AL - [ES:DI] DI :=DI+1 при DF=0 или DI :=DI-1 при DF=1 |
B |
Сканирование строки (scan string) |
SCASW |
AX - [ES:DI] DI :=DI+2 при DF=0 или DI :=DI-2 при DF=1 |
W |
Сканирование строки (scan string) |
Префиксы повторения |
|||
REP minstr |
Выполнение «команды» minstr пока CX0 |
|
Повторять (repeat) |
REPE cinstr REPZ cinstr |
Выполнение «команды» cinstr пока CX0 и ZF=1 |
|
Повторять пока равно (repeat if equal) или повторять пока ноль (repeat if zero) |
REPNE cinstr REPNZ cinstr |
Выполнение «команды» cinstr пока CX0 и ZF=0 |
|
Повторять пока не равно (repeat if not equal) или повторять пока не ноль (repeat if not zero) |

CMC