Программирование на Ассемблере


Дополнительные команды


Следующие две команды позволяют осуществить поиск первого установленного в 1 бита операнда. Поиск можно произвести как с начала так и от конца операнда:

bsf

операнд_1,операнд_2 (Bit Scaning Forward) - сканирование битов вперед.

Команда просматривает (сканирует) биты операнд_2

от младшего к старшему (от бита 0 до старшего бита) в поисках первого бита, установленного в 1. Если таковой обнаруживается, в операнд_1 заносится номер этого бита в виде целочисленного значения. Если все биты операнд_2 равны 0, то флаг нуля zf устанавливается в 1, в противном случае флаг zf сбрасывается в 0.

Пример:

mov     al,02h

        bsf     bx,al   ;bx=1

        jz      m1      ;переход, если al=00h

        ...

 

bsr операнд_1,операнд_2

(Bit Scaning Reset) — сканирование битов в обратном порядке. Команда просматривает (сканирует) биты операнд_2

от старшего к младшему (от старшего бита к биту 0) в поисках первого бита, установленного в 1. Если таковой обнаруживается, в операнд_1 заносится номер этого бита в виде целочисленного значения.

При этом важно, что позиция первого единичного бита слева отсчитывается все равно относительно бита 0. Если все биты операнд_2

равны 0, то флаг нуля zf

устанавливается в 1, в противном случае флаг zf

сбрасывается в 0. Заметим, что эти команды для tasm32 не компилируются



Содержание раздела