Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные системы (книга Комаров) / Программирование на Ассемблере (ч 3).doc
Скачиваний:
146
Добавлен:
08.03.2015
Размер:
540.67 Кб
Скачать

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 не выполняет никаких действий. Однако, она весьма полезна и может использоваться для различных целей: для организации временных задержек; для замены команд, удаляемых из программы в процессе отладки, что исключает необходимость ее повторной трансляции, в качестве носителя метки и т.д. и т.п.