|
7.
Инструкции управления процессором
Инструкции этого типа позволяют программно управлять
различными функциями CPU и условно подразделяются на 3
группы, соответствующие 3-м типам операций: манипуляции с
флагами, синхронизация и пустая операция. Только 1-я группа
инструкций влияет на состояния флагов процессора.
7.1. Операции с флагами.
CLC УСТАНОВИТЬ В 0 ФЛАГ ПЕРЕНОСА
---
Флаг переноса CF устанавливается в 0; состояния
остальных флагов не изменяются. Использование инструкций
CLC, STC и CMC весьма полезно в сочетании с инструкциями
вращения RCL и RCR.
STC УСТАНОВИТЬ В 1 ФЛАГ ПЕРЕНОСА
---
Флаг переноса CF устанавливается в 1; состояния
остальных флагов не изменяются. Использование инструкций
CLC, STC и CMC весьма полезно в сочетании с инструкциями
вращения RCL и RCR.
CMC ДОПОЛНЕНИЕ ФЛАГА ПЕРЕНОСА
---
Состояние флага переноса CF изменяется на
противоположное; состояния остальных флагов не меняются.
Использование инструкций CLC, STC и CMC весьма полезно в
сочетании с инструкциями вращения RCL и RCR.
CLD УСТАНОВИТЬ В 0 ФЛАГ НАПРАВЛЕНИЯ
---
Флаг направления DF, используемый в инструкциях
обработки строк, устанавливается в 0, что обеспечивает
- 40 -
автоматическое увеличение содержимого регистров SI и/или DI.
Состояния остальных флагов не изменяются.
STD УСТАНОВИТЬ В 1 ФЛАГ НАПРАВЛЕНИЯ
---
Флаг направления DF, используемый в инструкциях
обработки строк, устанавливается в 1, что обеспечивает
автоматическое уменьшение содержимого регистров SI и/или DI.
Состояния остальных флагов не изменяются.
CLI УСТАНОВИТЬ В 0 ФЛАГ РАЗРЕШЕНИЯ ПРЕРЫВАНИЙ
---
Флаг разрешения прерываний IF устанавливается в 0, в
результате чего процессор не будет распознавать внешние
запросы на прерывания, появляющиеся на линии INTR, т.е.
блокируются маскируемые прерывания. Немаскируемые
прерывания, появляющиеся на линии NMI, воспринимаются как
программные прерывания. Инструкция CLI на состояния других
флагов не влияет.
STI УСТАНОВИТЬ В 1 ФЛАГ РАЗРЕШЕНИЯ ПРЕРЫВАНИЙ
---
Флаг разрешения прерываний IF устанавливается в 1;
остальные флаги своих значений не меняют. При IF=1 процессор
способен распознавать маскируемые прерывания, появляющиеся
на линии INTR. Заметим, однако, что прерывание не будет
распознано до тех пор, пока не выполнится следующая за STI
инструкция.
7.2. Внешняя синхронизация.
HLT ОСТАНОВ ПРОЦЕССОРА
---
Инструкция HLT переводит процессор в состояние
останова, которое будет сохраняться до тех пор, пока не
произойдет одно из следующих событий:
1. Появление сигнала на линии RESET.
2. Появление запроса на немаскируемое прерывание
(на линии NMI).
3. Появление запроса на маскируемое прерывание
(на линии INTR).
Выполнение инструкции HLT на состояния флагов не
влияет. HLT может использоваться как альтернатива
- 41 -
бесконечному программному циклу, когда программа ожидает
прерывание.
WAIT ОЖИДАНИЕ
----
Инструкция WAIT переводит процессор в состояние
ожидания, которое будет сохраняться до тех пор, пока линия
TEST неактивна. На состояния флагов WAIT не влияет.
ESC код-внешней-операции,источник ВЫХОД
---------------------------------
По этой инструкции внешнему по отношению к 8086/8088
процессору передаются указанные код операции и операнд.
Код-внешней-операции представляет собой 6-битовую
непосредственно представленную константу, по которой
ассемблер формирует машинную инструкцию. Внешний процессор
имеет монитор системного транспортера и при выполнении
процессором 8086/8088 инструкции ESC захватывает этот код
операции. Если в качестве источника задан регистр, процессор
8086/8088 ничего не делает. Если указан операнд памяти,
процессор получает содержимое памяти и "отбрасывает" его.
Внешний процессор может захватить операнд памяти при чтении
его процессором из памяти.
LOCK БЛОКИРОВАТЬ ТРАНСПОРТЕР
----
LOCK представляет собой 1-байтный префикс, который
заставляет процессор 8086/8088 (минимальной конфигурации)
блокировать сигнал транспортера LOCK на время выполнения
следующей инструкции. Состояния флагов не изменяются.
7.3. Пустая операция.
NOP ПУСТАЯ ОПЕРАЦИЯ
---
Процессор не выполняет никаких действий.
© KOAP
Open Portal 2000
|