Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системное программирование.doc
Скачиваний:
178
Добавлен:
19.03.2015
Размер:
1.96 Mб
Скачать

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

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

По команде 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.

Код

Инструкция

Описание

90

NOP

Нет операции.

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

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

Код

Инструкция

Описание

F0

LOCK

Блокирование доступа к шине.