Команды управления микропроцессором

Команды управления работой микропроцессора включают три группы: команды управления флагами, команды внешней синхронизации и команда холостого хода.

По команде CLCфлаг переноса CF обнуляется (табл. 65). Остальные флаги не изменяются. По команде STCфлаг CF устанавливается. Команда CMCинвертирует флаг CF. Команды полезны для установки нужного состояния флага CF перед исполнением команд циклического сдвига RCL и RCR.

 

 

Табл. 65. Команды изменения флага CF.

Код Инструкция Описание
F8 CLC CF = 0
F9 STC CF = 1
F5 CMC CF = NOT CF

 

 

По команде CLDсбрасывается флаг направления DF регистра флагов (табл. 66). Остальные флаги не изменяются. Когда флаг DF сброшен, строковые команды выполняются в направлении увеличения адресов памяти (производится инкремент регистров SI и DI). Команда STDустанавливает флаг направления DF. Установка флага DF обеспечивает выполнение строковых операций с уменьшением адресов операндов, находящихся в регистрах SI и DI.

 

 

Табл. 66. Команды изменения флага DF.

Код Инструкция Описание
FC CLD DF = 0
FD STD DF = 1

 

 

Команда CLIобнуляет флаг разрешения прерывания IF регистра флагов (табл. 67). Остальные флаги не изменяются. Когда флаг IF сброшен, запрещаются внешние прерывания. Команда STIустанавливает флаг IF и обработка внешних прерываний разрешена.

 

 

Табл. 67. Команды изменения флага IF.

Код Инструкция Описание
FA CLI IF = 0
FB STI IF = 1

 

 

К группе команд внешней синхронизации относятся команды ESC/WAIT/HLT (табл. 68).

 

 

Табл. 68. Команды внешней синхронизации.

Код Инструкция Описание
11011xxx ModRegR/M ESC op, r/m Выполнение операции сопроцессора op над операндом r/m.
9B WAIT Переход в ожидание готовности сопроцессора.
F4 HLT Останов процессора.

 

 

Команда ESCобеспечивает выполнение заданной инструкции сопроцессора. Архитектура микропроцессоров семейства 8086 позволяет подключить к ним сопроцессор любого назначения, выполняющий дополнительные команды и согласующий свою работу с основным процессором. Исторически сложилось так, что был разработан и получил распространение только арифметический сопроцессор 8087. Флаги ESCкоманда не изменяет.

Команда WAITприостанавливает выполнение программы до тех пор, пока не будет закончена обработка последней команды сопроцессора (до поступления сигнала готовности от сопроцессора). Команда используется после инструкций математического сопроцессора. Флаги команда не изменяет.

По команде HLTпроцессор прекращает дальнейшее выполнение операций и переходит в состояние останова. Флаги команда не изменяет. Работа может быть возобновлена выполнением сброса или по прерыванию. При возобновлении работы по прерыванию в стек будет записан адрес команды, следующей за инструкцией HLT.

Последней командой является NOP(табл. 69). Эта однобайтовая команда не выполняет никаких действий, за исключением приращения указателя счетчика команд IP. Флаги команда не изменяет. Заметим, что команда на самом деле является инструкцией XCHG AX, AX. Примером применения команды NOP является возможность удаления (замены) кодов команд в исполняемом модуле без необходимости повторной трансляции программы, например, в целях отладки.

 

 

Табл. 69. Команда NOP.

Код Инструкция Описание
NOP Нет операции.

 

 

И еще одна команда управления процессором LOCK на самом деле является префиксом (табл. 70). Он указывает процессору выставить на время выполнения следующей команды сигнал, блокирующий доступ к памяти со стороны других процессоров и внешних устройств. Префикс полезен в реализации многозадачного режима и используется только с инструкциями ADD, ADC, AND, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR и XCHG. Флаги не изменяются, но могут быть изменены инструкцией, с которой он применяется.

 

 

Табл. 70. Команда LOCK.

Код Инструкция Описание
F0 LOCK Блокирование доступа к шине.

Контрольные вопросы

1. Перечислите функциональные группы машинных команд.

2. Приведите примеры использования команд пересылки данных.

3. Опишите работу арифметико-логических команд.

4. В чем состоит коррекция при выполнении арифметических операций над BCD-числами.

5. Приведите примеры использования команд организации циклов и условий.

6. Опишите работу строковых команд.

7. В чем состоит назначение стека? Как происходит работа со стеком?