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

2.3. Система команд: операции управления

К этому классу относятся команды, которые обеспечивают управление программой -условные и безусловные переходы, обращение к подпрограммам прерывания, организа­цию цикла и др., поддержку языков высокого уровня, организацию защиты памяти и управ­ления процессором. Ниже дается полный перечень этих команд, разбитых на функцио­нальные группы.

Управление программой

Безусловная передача управления:

JMP-Безусловный переход

CALL-Вызов подпрограммы

RET - Возврат из подпрограммы

Условные переходы без учета знака:

JA/JNBE-Переход, если выше (не ниже, неравно)

JAE/JNB/JNC - Переход, если CF = 0: выше или равно (не ниже)

JB/JNAE/JC - Переход, если CF = 1: ниже (не выше или равно)

JBE/JNA- Переход, если ниже или равно (не выше)

JE/JZ-Переход, если равно (нуль): ZF = 1

JNE/JNZ- Переход, если не равно (не нуль): ZF = О

JP/JPE - Переход, если четность: PF = 1

JNP/JPO - Переход, если нечетность: PF = О

Условные переходы с учетом знака:

JG/JNLE - Переход, если больше (не меньше, не равно) JGE/JNL- Переход, если больше или равно (не меньше) JUJNGE - Переход, если меньше (не больше, не равно) JLE/JNG - Переход, если меньше или равно (не больше) JS - Переход, если отрицательно: SF = 1 JNS - Переход, если положительно: SF = О JO - Переход, если переполнение: OF = 1 JNO - Переход, если нет переполнения: OF = О

Вызов системных программ:

SYSENTER - Быстрый переход к системной программе

SYSEXIT-Быстрый возврат из системной программы

Прерывания

INT-Прерывание

INTO - Прерывание по переполнению (OF = 1)

Int3 - Прерывание в контрольной точке

UD2 - Прерывание недействительного кода операции

Iret-Возврат из подпрограммы обслуживания прерывания

CLI - Запрещение прерываний

STI-Разрешение прерываний

Организация циклов

OP - Реализация циклов, пока ЕСХ = О LOOPE/LOOPZ - Реализация циклов, пока ЕСХ = 0 или ZF = 1 LOOPNE/LOOPNZ - Реализация циклов, пока ЕСХ = 0 или ZF = О JCXZ (JECXZ) - Реализация циклов, пока СХ = О (ЕСХ - 0)

Операции над признаками

LAHF- Загрузка признаков в регистр АН

SAHF - Запись содержимого АН в регистр признаков

PUSHF —Запись содержимого регистра признаков в стек

POPF-Загрузка содержимого регистра признаков из стека

CLC - Сброс признака переноса: CF = О

STC-Установка признака переноса: CF = 1

CMC-Инвертирование признака переноса CF

CLD - Сброс признака направления: DF = 0

СТО - Установка признака направления: DF = 1

Поддержка языка высокого уровня ч

BOUND-Проверка границ массива

ENTER-Обращение к процедуре

LEAVE - Выход из процедуры

Организация защиты памяти '

SGDT-Запись содержимого регистра таблицы глобальных дескрипторов

SLDT - Запись содержимого регистра таблицы локальных дескрипторов

SIDT-Запись содержимого регистра таблицы дескрипторов прерываний

STR - Запись содержимого регистра задачи

LGD-Загрузка регистра таблицы глобальных дескрипторов

LLDT-Загрузка регистра таблицы локальных дескрипторов

LIDT-Загрузка регистра таблицы дескрипторов прерываний

LTR - Загрузка регистра задачи

CLTS - Сброс признака переключения задачи: TS = О

ARPL - Коррекция запрошенного уровня привилегий;

LAR - Загрузка прав доступа

LSL - Загрузка границы сегмента

VERR - Проверка доступности сегмента при чтении

VERRW - Проверка доступности сегмента при записи

Управление процессором

LMSW- Загрузка слова состояния машины (MSW)

SMSW-Запись в память слова состояния машины (MSW)

NOP - Отсутствие операции

HLT-Останов

CPUID- Идентификация модели процессора

RSM - Возврат из режима системного управления

INVD-Аннулирование содержимого кэш-памяти

WBINVD- Обратная запись и аннулирование кэш-памяти

INVLPG-Аннулирование входа в таблицу страниц

RDMSR - Чтение содержимого модельно-специфических регистров MSR

WRMSR - Запись содержимого модельно-специфических регистров MSR

RDPMC - Чтение счетчика-монитора производительности

RDTSC -Чтение содержимого регистра-счетчика времени

Префиксные байты, которые вводятся перед очередной командой, изменяют процеду­ру ее выполнения. Поэтому префиксные байты можно рассматривать как дополнительные команды управления, которые определяют процесс выполнения последующей операции:

префикс SEG - замена сегмента

префикс AS-изменение разрядности адреса

префикс OS - изменение разрядности операнда

префикс LOCK-блокировка магистрали

префиксы REP, REPE(NE) - повторение операций со строками символов