Скачиваний:
23
Добавлен:
11.05.2015
Размер:
998.91 Кб
Скачать

9.2.2. Арифметические команды

Арифметические команды выполняют основные арифметические действия: сложение, вычитание, умножение, деление. Ниже перечислены некоторые из арифметических команд.

Команды: сложения — ADD, вычитания — SUB, сложения и вычитания переноса — ADC, SBB (операция с использованием значение флага CF).

При выполнении команды CMP производится вычитание операндов, но при этом результат никуда не записывается, а устанавливаются признаки в файловом регистре в соответствии с полученным результатом.

Команды умножения и деления: MUL — умножение беззнакового числа IMUL  умножение чисел со знаком, DIV  деление целых беззнаковых чисел, IDIV  деление целых чисел со знаком.

INС — увеличение операнда на единицу, DEC — уменьшение операнда на единицу.

Команда NEG изменяет знак операнда. XADD обменивает содержимое операндов между собой и складывает их.

CMPXCHG — команда сравнения и обмена операндов между собой.

CMPXCG8H — сравнить и обменять 8 бит.

Команды десятичной коррекции применяются для поддержки десятичной арифметики: ААА, ААS, AAM, AAD, DAA, DAS.

8.2.3. Команды манипуляции битами

Эти команды применяются для выполнения операций с отдельными битами.

AND выполняет логическую операцию И для двух операндов.

OR выполняет логическую операцию ИЛИ для двух операндов.

NOT инвертирует биты операнда.

TEST — команда логического сравнения, аналогична AND, но результат не сохраняется. Применяется для проверки выбранных разрядов и установки регистра флагов.

XOR — выполняет операцию исключающее ИЛИ для 2-х операндов.

Команды установки и проверки отдельных бит: BT, BTS, BTR, BTC.

Сканирование бита — BSF и BSR осуществляют поиск первого единичного бита и заносят его номер в приемник.

Команды сдвига позволяют передвигать биты внутри операнда. Применяются для ускорения операции умножения и деления целых чисел и для преобразования двоичных полей: SHR, SHL, SAR, SAL, ROR, ROL, RCL, RCR, SHRD, SHLD.

9.2.4. Управление центральным процессором

Команды управление регистром флагов:

CLC, CLD,CLI, CMC, STC, STD, STI — изменяются значения некоторых флагов.

LAHF / SAHF — переносят данные между частью регистра флагов и регистром AH.

POPF, POPFD, PUSHF, PUSHFD — переносят данные между частью регистра флагов и стеком.

К системным инструкциям относятся такие, как:

INV — аннулирование данных во внутреннем КЭШе и инициация аннулирования во внешнем КЭШе (без обратной записи).

LGDT, LIDT, LLDT, LTR, SGDT, SIDT, SLDT, STR — чтение/запись системных адресных регистров.

LMSW, SMSW — чтение/запись слова состояния машины.

RDMSR, WRMSR — чтение/запись модельно-специфических регистров.

WBINVD — обратная запись модифицированных строк, аннулирование внутренней кэш-памяти, инициация аннулирования во внешнем КЭШе.

VERR, VERW — проверка возможности чтения/записи в указанном сегменте.

WAIT — режим ожидания завершения выполнения команды сопроцессора.

HLT — остановка процессора до получения какого-либо из сигналов аппаратного прерывания.

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

ESC — информирует, что следует команда для сопроцессора.

LOCK — монопольный захват шины процессора на время выполнения следующей операции (используется в многопроцессорных системах). Команда XCHG всегда захватывает шину на время выполнения.

SIZ — изменение разрядности операнда следующей команды.

ADDRSIZ — изменение разрядности адреса следующей команды.

CS:, SS:, DS:, ES:, FS:, GS: — изменение сегментного регистра следующей команды.

REP, REPE, REPZ, REPNE, REPNZ — повтор следующей операции до обнуления CX (ECX). CX (ECX) будет уменьшаться на 1 при каждом повторе операции.

Соседние файлы в папке Введение в вычислительную технику.