Иллюстрированный самоучитель по Assembler

         

BSF Прямое сканирование битов


Команда bsf сканирует слово или двойное слово в поисках бита, равного 1. Сканирование выполняется от младшего бита (0) к старшему. Если в слове не найдено установленных битов, то устанавливается флаг ZF. Если установленные биты есть, то номер первого установленного бита заносится в указанный в команде регистр. Номером бита считается его позиция в слове, отсчитываемая от бита 0. В качестве первого операнда команды bsf следует указывать регистр, куда будет помещен результат сканирования, в качестве второго - регистр или ячейку памяти со сканируемым словом. В команде bsf допустимо использование как 16-битовых, так и 32-битовых операндов (но и первый, и второй операнды должны быть одного типа).

Пример 1

mov BX,70h ;Анализируемое данное

bsf АХ,ВХ ;АХ=4, ZF=0

Пример 2

mov SI,0 ;Анализируемое данное

bsf BX,SI ;ZF=1, в ВХ прежнее значение

Пример 3

mov SI,8 ;Анализируемое данное

bsf BX,SI ;BX=3, ZF=1

Пример 4

;В полях данных

mem dw 9000h Анализируемое данное

;В программном сегменте:

bsf AX, mem ;AX=000Ch=12, ZF=0

386+ BSR Обратное сканирование битов

Команда bsf сканирует слою или двойное слово в поисках бита, равного 1. Сканирование выполняется от старшего бита (15 или 31) к младшему. Если в слове не найдено установленных битов, то устанавливается флаг ZF. Если установленные биты есть, то номер первого установленного бита заносится в указанный в команде регистр. Номером бита считается его позиция в слове, отсчитываемая от бита 0. В качестве первого операнда команды bsf следует указывать регистр, куда будет помещен результат сканирования, в качестве второго - регистр или ячейку памяти со сканируемым словом. В команде bsf допустимо использование как 16-битовых, так и 32-битовых операндов, но и первый, и второй операнды должны быть одного типа (за исключением случая, когда второй операнд - константа).

Пример 1

mov BX,70h ;Анализируемое данное

bsr AX,BX ;AX=6, ZF=0

Пример 2

mov SI,0 ;Анализируемое данное

bsr BX,SI ;ZF=1, в ВХ прежнее значение

Пример 3

mov SI,8 ;Анализируемое данное

bsf BX,SI ;BX=3, ZF=1



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