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

Работать с отдельными битами операндов можно, используя логические операции и сдвиги. Также в системе команд 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

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

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

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

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Основы создания макросов в Assembler.

Основы создания макросов в Assembler.

Макросы — это шаблоны для генерации кода. Один раз создав макрос, можно использовать его во многих местах в коде программы. Макросы делают процесс программирования на

 
Синтаксис объявления меток.

Синтаксис объявления меток.

Метка в ассемблере – это символьное имя, обозначающее ячейку памяти, которая содержит некоторую команду. Метка может содержать следующие символы: Буквы (от A до Z и

 
Локальные переменные.

Локальные переменные.

Локальные переменные в Assembler используются для хранения промежуточных результатов во время выполнения процедуры. В отличие от глобальных, эти переменные являются временными и создаются при запуске

 
Передача параметров через стек.

Передача параметров через стек.

В предыдущих уроках все параметры передавались процедурам через регистры. В этой статье мы рассмотрим другой способ — передачу параметров через стек. Часто этот способ оказывается

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: