Система команд
Команды прерываний
Мнемоника | Формат | Комментарий |
---|---|---|
INT | INT номер | Выполнить прерывание |
INTO | INTO | Выполнить прерывание по переполнению |
IRET | IRET | Вернуться из прерывания |
Выполнение прерываний во многом напоминает косвенный вызов дальней процедуры. По команде INT (INTO) в стек помещается регистр флагов, сегмент CS и указатель IP, а новые значения этих регистров берутся из 4-байтного вектора прерывания, соответствующего номеру прерывания в команде INT, или из вектора 4 – для команды INTO. Таким образом, единственным отличием от команды CALL является то, что в стек предварительно заносится регистр флагов.
Следует, правда, оговориться: перед передачей управления программе обработки прерывания микропроцессор сбрасывает флаги трассировки TF и прерываний IF; сброс TF необходим для обеспечения нормальной работы отладчиков, использующих прерывание по вектору 1 или 4, сброс IF блокирует вмешательство других процессов в ход обработки прерывания.
Команда INTO представляет собой условное прерывание и выполняется, если в этот момент взведен флаг переполнения OF. Команда IRET реализует правильный выход из программы обработки прерывания: она считывает из стека 3 двухбайтные слова и помещает их в регистры IP, CS и регистр флагов.
Команды управления
Мнемоника | Формат | Комментарий |
---|---|---|
Управление флагами | ||
STC | STC | Установить перенос |
CLC | CLC | Очистить перенос |
CMC | CMC | Инвертировать CF |
STD | STD | Установить направление |
CLD | CLD | Очистить направление |
STI | STI | Разрешить прерывания |
CLI | CLI | Запретить прерывания |
Внешняя синхронизация | ||
HLT | HLT | Остановить вычисления |
WAIT | WAIT | Ждать активности на шине |
ESC | ESC код, источник | Передать команду |
LOCK | LOCK | Захватить шину |
Пустая команда | ||
NOP | NOP | Нет операции |
Команды внешней синхронизации работают следующим образом.
HALТ переводит МП в состояние останова, из которого его можно вывести только при перезагрузке системы или при наступлении немаскируемого прерывания.
WAIT заставляет МП выполнять холостой режим работы и каждые 5 тактов проверять уровень сигнала на входной шине: пока на этой шине нет сигнала активности, процессор выполняет WAIT, но как только шина активизируется, он продолжит исполнение программы. Эта инструкция обычно используется для ожидания сигнала обслуживания (прерывания) высокоприоритетного устройства типа контроллера прямого доступа к памяти.
Команда ESC используется для передачи указанного в ней операнда на шину данных. Тем самым обеспечивается возможность передачи команд другим процессорам. Эта команда чаще всего используется для управления работой арифметического сопроцессора. В этом случае код представляет собой код команды сопроцессора, а источник – используемый в этой команде операнд.
Команда LOCK фактически представляет собой однобайтовый префикс, который можно использовать совместно с любой другой командой микропроцессора. По этой команде МП активизирует одноименный сигнал на своей шине, что исключает возможность использования этой шины любым другим внешним устройством (процессором).