Система команд процессоров IA-32. Функциональная классификация машинных команд. Понятие о формате машинных команд, страница 4

SCAS/SCASB      Сканирование цепочки/ Сканирование цепочки байт

SCAS/SCASW     Сканирование цепочки/ Сканирование цепочки слов

SCAS/SCASD     Сканирование цепочки/ Сканирование цепочки двойных слов

LODS/LODSB     Загрузка цепочки в регистр аккумулятор/Загрузка цепочки байт

LODS/LODSW    Загрузка цепочки в аккумулятор/Загрузка цепочки слов

LODS/LODSD     Загрузка цепочки в аккумулятор/Загрузка цепочки двойных слов

STOS/STOSB      Сохранение в цепочке аккумулятора/Сохранение в цепочке байт

STOS/STOSW     Сохранение в цепочке аккумулятора/Сохранение в цепочке слов

STOS/STOSD      Сохранение в цепочке аккумулятора/Сохранение в цепочке двойных слов

REP                     Префикс повторения пока ECX (CX) не равно нулю

REPE/REPZ         Префикс повторения пока равно/ Префикс повторения пока ноль

REPNE/REPNZ   Префикс повторения пока не равно/ Префикс повторения пока не ноль

3.1.1.9. Команды ввода/вывода

Эти команды перемещают данные между портами ввода/вывола и регистром или памятью. В защищенном режиме команды ввода/вывода являются, как правило, привилегированными, т.е. выполняются на максимальном уровне привилегий.

IN                        Чтение из порта

OUT                    Запись в порт

INS/INSB            Ввод цепочки из порта/ Ввод цепочки байт из порта

INS/INSW           Ввод цепочки из порта/ Ввод цепочки слов из порта

INS/INSD            Ввод цепочки из порта/ Ввод цепочки двойных слов из порта

OUTS/OUTSB     Вывод цепочки в порт/ Вывод цепочки байт в порт

OUTS/OUTSW    Вывод цепочки в порт/ Вывод цепочки слов в порт

OUTS/OUTSD     Вывод цепочки в порт/ Вывод цепочки двойных слов в порт

3.1.1.10. Команды Enter и Leave

Эти команды помогают машинно-ориентированному языку поддерживать вызовы процедур из модулей, написанных на языках высокого уровня.

ENTER                Высокоуровневое начало процедуры

LEAVE                Высокоуровневый конец процедуры

3.1.1.11. Команды для работы с регистром флагов (EFLAGS)

Команды для работы с регистром флагов позволяют работать с отдельными флагами.

STC                     Установка флага переноса CF (CF=1)

CLC                     Сброс флага переноса CF (CF=0)

CMC                    Инвертирование флага переноса CF

CLD                     Сброс флага направления DF (DF=0)

STD                     Установка флага направления DF (DF=1)

LAHF                  Загрузка флагов в регистр AH

SAHF                  Выгрузка регистра AH во флаги

PUSHF/PUSHFD Проталкивание EFLAGS в стек

POPF/POPFD      Вталкивание из стека в EFLAGS

STI                       Установка флага прерываний IF (IF=1)

CLI                      Сброс флага прерываний IF (IF=0)

3.1.1.12. Команды для работы с сегментными регистрами

Команды для работы с сегментными регистрами позволяют при работе с дальними указателями загрузить сегментную часть адреса в сегментные регистры.

LDS                     Загрузка дальнего указателя, используя регистр DS

LES                      Загрузка дальнего указателя, используя регистр ES

LFS                      Загрузка дальнего указателя, используя регистр FS

LGS                     Загрузка дальнего указателя, используя регистр GS

LSS                      Загрузка дальнего указателя, используя регистр SS

3.1.1.13. Обособленные команды

LEA                     Загрузка эффективных адресов

NOP                     Пустая команда

UD2                     Генерация исключения неопределенного кода команды

XLAT/XLATB    Табличное преобразование

CPUID                 Получение информации о процессоре

3.1.2. Команды X87 FPU

Здесь мы только перечислим группы команд X87 FPU, оставив более подробное их изучение до соответствующей лекции. Команды x87 FPU выполняются с использованием особого устройства – модуля x87 FPU, который, начиная с процессора i486, входит в состав процессора. Эти команды работают с числами с плавающей точкой, целыми числами и двоично-десятичными числами.