- •Префиксы повторения
- •3.11.6. Команды управления микропроцессором
- •Команды управления флагами
- •Команды синхронизации
- •3.11.7. Принципы кодирования команд
- •3.11.8. Время выполнения команд
- •3.12. Организация подпрограмм
- •3.12.1. Директивы описания подпрограмм
- •3.12.2. Передача параметров в подпрограммы
- •Передача параметров через регистры
- •Передача параметров через общие ячейки памяти
- •Передача параметров через зоны параметров
- •Передача параметров через стек
- •3.13. Организация системы прерываний
- •3.13.1. Внешние прерывания
- •3.13.2. Внутренние прерывания
- •3.13.3. Обслуживание прерываний
- •3.14.Нестандартные типы данных
- •3.14.1. Структуры
- •3.14.2. Записи
- •3.15.Макрокоманды
- •3.15.1. Макроопределения и макровызовы
- •3.15.2.Сравнение макрокоманд и подпрограмм
- •3.15.3. Макрокоманды повторения
- •3.15.4. Библиотеки макроопределений
- •IncludeИмя_библиотеки
3.11.6. Команды управления микропроцессором
Команды этой группы позволяют управлять работой МП из программы. Они делятся на две подгруппы:
1)команды управления флагами;
2)команды синхронизации.
Команды управления флагами
Все команды этой подгруппы не имеют операндов. Они позволяют изменять состояния трех флагов: флага переноса CF, флага направления DF и флага разрешения прерывания IF.
Команды CLC, CMC и STC выполняют соответственно
сброс (CF=0), инвертирование (CF=
),
и установку (CF=1) флага переноса. Они
используются для установки нужного
состояния флага CF перед циклическим
исполнением команд сложения ADC и вычитания
SBB, а также перед командами циклического
сдвига.
Команды CLD и STD обеспечивают соответственно сброс (DF=0) и установку (DF=1) флага направления DF, определяющего направление обработки строк. В зависимости от состояния этого флага осуществляется автоинкрементирование или автодекрементирование регистров SI и DI при выполнении строковых примитивов.
Команды CLI и STI управляют состоянием флага разрешения прерывания IF, осуществляя соответственно его сброс (IF=0) или установку (IF=1).
При IF=0 внешние маскируемые прерывания (по входу INTR) игнорируются МП, а немаскируемые прерывания (по входу NMI) не могут быть запрещены программным путем и обрабатываются обычным образом. После команды STI флаг IF устанавливается в 1, разрешая маскируемые прерывания. Однако, ожидающее прерывание не распознается до завершения команды, находящейся за STI. При переходе к обслуживанию прерывания флаг IF автоматически сбрасывается, что предотвращает несанкционированные вложенные прерывания по входу INTR.
Команды управления флагом трассировки TF отсутствуют. Его значение изменяется через память с помощью логических команд AND или OR с соответствующей маской (см. пример 3.80).
Команды синхронизации
Эти команды позволяют синхронизировать работу МП с внешними событиями. К ним относятся команды HLT, WAIT, ESC, LOCK и NOP.
Команда останова HLT переводит МП в состояние останова, выход из которого возможен либо по сигналу сброса RESET, либо по запросу прерывания INTR или NMI. Эта команда используется вместо бесконечного программного цикла для ожидания какого-либо внешнего события, о наступлении которого сообщает сигнал прерывания.
Команда ожидания WAIT проверяет уровень
сигнала на входе
и переводит МП в состояние ожидания,
если
=1.
В состоянии ожидания уровень сигнала
на входе
проверяется через каждые 5 тактов
синхронизации. При обнаружении значения
=0
МП выходит из состояния ожидания и
продолжает выполнение программы. Команда
WAIT помещается в те точки программы,
начиная с которых для ее продолжения
необходимо наступление какого-либо
внешнего события, о котором сообщает
сигнал
.
Команда WAIT часто используется совместно
с командой ESC для взаимодействия с
арифметическим сопроцессором.
Команда расширения функций ESC записывается в формате:
ESC внешняя_операция, источник,
где внешняя_операция это код внешней операции, которая должна выполняться не самим МП, а каким-либо другим устройством системы; источникэто адресуемый любым способом операнд, над которым выполняется заданная операция.
При выполнении команды ESC МП извлекает из памяти на шину данных указанные в ней операнды, но не обрабатывает их.
Извлеченные операнды предназначены для другого устройства многопроцессорной системы (как правило, сопроцессора) и считываются им с последующим выполнением указанной операции. Таким образом, команда ESC обеспечивает подключение внешних устройств системы для реализации расширенных функций.
Команда блокировки LOCK является префиксом
и может предшествовать любой команде.
При наличии префикса LOCK перед некоторой
командой в течение всего времени ее
выполнения на выходе
МП устанавливается активный нулевой
уровень. Этот сигнал должен использоваться
для аппаратной блокировки, то есть
предотвращения доступа к системной
шине другим устройствам многопроцессорной
системы.
Команда холостой операции NOP не выполняет никаких действий. Однако, она весьма полезна и может использоваться для различных целей: для организации временных задержек; для замены команд, удаляемых из программы в процессе отладки, что исключает необходимость ее повторной трансляции, в качестве носителя метки и т.д. и т.п.
