29. Команды побитовой обработки. Типы операндов. Логические операции. Команды доступа у отдельным битам.

Команды побитовой обработки:

  • Позволяют анализировать или изменить часть операнда
  • Выполняются быстрее
  • Имеют 1-3 операнда
  • Операндом может быть: имя регистра, адрес ячейки оперативной памяти, непосредственный операнд
  • Операнды имеют размер: байт, слово, двойное слово
  • По назначению делятся на: логические, доступа к отдельным битам и команды сдвига

Логические операции
Все команды, кроме NOT, изменяют флаги zf, cf, of, pf, sf
AND — Побитовое логическое умножение. Используют для выделения части битов.
1100 AND 1010 = 1000

OR — Побитовое логическое сложение. Используют вместо команд сравнения
1100 OR 1010 = 1110
or ax, ax => cmp ax, 0

XOR — Побитовое сложение по модулю два. Используют для обнуления.
1100 XOR 1010 = 0110
1010 XOR 1010 = 0000

TEST — Выполняется логическое умножение, но приемник не меняется. Меняются только флаги.

NOT — Инвертирует каждый бит
NOT 1010 = 0101



Команды доступа к отдельным битам
Все эти команды изменяют cf
BT (BitTest) операнд, смещение бита. Переносит содержимое бита в cf
BTS (BitTest & Set) операнд, смещение бита. Переносит в cf и устанавливает бит в 1
BTR (BitTest & Reset) операнд, смещение бита. Переносит в cf и устанавливает бит в 0
BTC (BitTest & Convert) операнд, смещение бита. Переносит в cf и инвертирует бит.
BSF (Bit Scanning Forward) операнд_1, операнд_2. Просматривает биты операнда_2 от младшего к старшему в поисках бита, установленного в единицу. Если такой бит будет найден, то в операнд_1 заносится номер этого бита (смещение).Если все биты операнда_2 равны 0, то флаг zf=0.
BSR (Bit Scanning Reverse) операнд_1, операнд_2. То же, что и BSF, но в обратном порядке просматривает.

17.07.2015