Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по МПиМК / Лекция 04.doc
Скачиваний:
160
Добавлен:
15.06.2014
Размер:
415.74 Кб
Скачать

8.6. Инструкции обработки бит и байт

Инструкции позволяют проверять (копировать в CF) и устанавливать значение указанного операнда, а также искать установленный бит. Битовые операции выполняются над 16– или 32–битным словом памяти или регистром. Инструкции BSF, BSR и BT не изменяют значения слова; BCT, BTR и BTS воздействуют на указанный бит слова r/m. Операции с байтами обеспечивают условную установку значений 00h или 01h. Инструкции приведены в таблице 8.7.

Таблица 8.7

Команда

Описание

BSF reg, reg/mem

Сканирование бит вперед. В reg загружается индекс (беззнаковое смещение относительно бита 0) самого младшего единичного бита reg/mem. Если в reg/mem только нули, устанавливается ZF

BSR reg, reg/mem

Сканирование бит назад. В reg загружается индекс (беззнаковое смещение относительно бита 0) самого старшего единичного бита reg/mem. Если в reg/mem только нули, устанавливается ZF

BT reg/mem, i8

~ reg/mem, reg

Тестирование бита – загрузка в CF бита с номером i8 или reg (по модулю 16 или 32) из reg/mem

BTC reg/mem, i8

~ reg/mem, reg

Тестирование и изменение значения бита

BTR reg/mem, i8

~ reg/mem, reg

Тестирование и сброс бита

BTS reg/mem, i8

~ reg/mem, reg

Тестирование и установка бита

SALC

Установка AL = FFh, если CF = 1, иначе AL = 00h

SETA/SETNBE r/m8

Установка байта в 01h, если выше (CF = ZF = 0), иначе в 00h (P6+)

SETAE/SETNB/SETNC r/m8

Установка байта в 01h, если не ниже (CF = 0), иначе в 00h (P6+)

SETB/SETNAE/SETC r/m8

Установка байта в 01h, если ниже (CF = 1), иначе в 00h (P6+)

SETBE/SETNA r/m8

Установка байта в 01h, если не выше (CF ИЛИ ZF = 1), иначе в 00h (P6+)

SETE/SETZ r/m8

Установка байта в 01h, если равно (ZF = 1), иначе в 00h (P6+)

SETG/SETNLE r/m8

Установка байта в 01h, если больше (SF = OF И ZF), иначе в 00h (P6+)

SETGE/SETNL r/m8

Установка байта в 01h, если больше или равно (SF = OF), иначе в 00h (P6+)

SETL/SETNGE r/m8

Установка байта в 01h, если меньше (ZF != OF), иначе в 00h (P6+)

SETLE/SETNG r/m8

Установка байта в 01h, если меньше или равно (SF != OF или ZF = 0), иначе в 00h (P6+)

SETNE/SETNZ r/m8

Установка байта в 01h, если не равно (ZF = 0), иначе в 00h (P6+)

SETNO r/m8

Установка байта в 01h, если нет переполнения (OF = 0), иначе в 00h (P6+)

SETNS r/m8

Установка байта в 01h, если неотрицательно (SF = 0), иначе в 00h (P6+)

SETO r/m8

Установка байта в 01h, если переполнение (OF = 1), иначе в 00h (P6+)

SETPE/SETP r/m8

Установка байта в 01h, если паритет (четность) (PF = 1), иначе в 00h (P6+)

SETPO/SETNP r/m8

Установка байта в 01h, если нет паритета (нечетность) (PF = 0), иначе в 00h (P6+)

SETS r/m8

Установка байта в 01h, если отрицательно (SF = 1), иначе в 00h (P6+)

SETC r/m8

Установка байта в 01h, если перенос (CF = 1), иначе в 00h (P6+)

SETNC r/m8

Установка байта в 01h, если нет переноса (CF = 0), иначе в 00h (P6+)

TEST r/m, i ~ r/m, r

Проверка бит (логическое И без записи результата, установка флагов)

Соседние файлы в папке Конспект по МПиМК