BSR
(Bit Scan Reverse)
Побитное сканирование назад
Схема команды: | bsr результат,источник |
Назначение: проверка наличия единичных битов в операнде источник.
Алгоритм работы:
просмотр битов операнда источник, начиная со старшего бита 15/31 и заканчивая битом 0, до тех пор, пока не встретится единичный бит;
если встретился единичный бит, флаг zf устанавливается в 0 и в регистр первого операнда записывается номер позиции (отсчет осуществляется относительно нулевой позиции), где встретился самый старший единичный бит. Диапазон значений зависит от разрядности второго операнда: для 16-разрядного операнда это 0...15; для 32-разрядного — 0...31;
если единичных битов нет, флаг zf устанавливается в 1.
Состояние флагов после выполнения команды:
06 |
ZF |
r |
Применение:
Команду bsr используют при работе на битном уровне для определения позиции крайних слева единичных битов.
Например, сдвинем содержимое регистра bx вправо таким образом, чтобы старший единичный бит исходного значения в bx переместился в нулевую позицию:
.386 mov bx,41h ... bsr cx,bx ;cx=06h jz null shr bx,ax ;bx=0001h ... null:... |
См. также: уроки 9, 12 и команду