Команды работы с битами.

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

Команды сканирования битов

Сканирование битов выполняется командами BSF и BSR. Эти команды очень похожи. У них 2 операнда. Первый операнд должен быть 16-битным регистром, в него записывается результат. Второй операнд может быть 16-битным регистром или словом в памяти — это обрабатываемое значение.

Команда BSF просматривает биты второго операнда от младшего к старшему и помещает индекс первого единичного бита в регистр. Биты нумеруются, начиная с нуля. Если единичный бит найден, то флаг нуля сбрасывается (ZF=0). Если все биты нулевые, то флаг нуля устанавливается (ZF=1), а значение первого операнда будет неопределённым (на разных процессорах может быть по-разному). Пример:

    mov ax,01011000b  ;AX=58h
    bsf bx,ax         ;BX=3, ZF=0
    xor ax,ax         ;AX=0
    bsf bx,ax         ;BX=?, ZF=1

Команда BSR отличается тем, что просматривает биты от старшего к младшему. Всё остальное также.

    mov ax,01011000b  ;AX=58h
    bsr bx,ax         ;BX=6, ZF=0
    xor ax,ax         ;AX=0
    bsr bx,ax         ;BX=?, ZF=1

Команды проверки и модификации битов

Команда BT копирует значение проверяемого бита в флаг CF. После этого можно выполнить условный переход командами JC или JNC, в зависимости от значения бита. У команды два операнда: слово в регистре или в памяти и номер бита, который может находиться в регистре или быть непосредственным значением. Примеры использования команды:

    bt ax,0           ;Проверка младшего бита AX
    jc m1             ;Переход, если бит равен 1
    mov cx,3          ;CX=3
    bt ax,cx          ;Проверка 3-го бита AX
    jnc m1            ;Переход, если бит равен 0

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *