Об ассемблере



страница9/52
Дата14.08.2018
Размер3.59 Mb.
#43964
ТипЛекция
1   ...   5   6   7   8   9   10   11   12   ...   52

BSF


(Bit Scan Forward)

Побитное сканирование вперед

 


Схема команды: 

bsf результат,источник 

Назначение: для проверки наличия единичных битов в операнде источник.

Синтаксис

Алгоритм работы:

  • просмотр битов операнда источник, начиная с бита 0 и заканчивая битом 15/31, до тех пор, пока не встретится единичный бит;

  • если встретился единичный бит, то флаг zf устанавливается в 0 и в регистр первого операнда записывается номер позиции, где встретился единичный бит. Диапазон значений зависит от разрядности второго операнда: для 16-разрядного операнда — это 0...15; для 32-разрядного — это 0...31;

  • если единичных битов нет, то флаг zf устанавливается в 1.

Состояние флагов после выполнения команды:

06

ZF

r

Применение:

Команду bsf используют при работе на битном уровне для определения позиции в операнде крайних справа единичных битов.

Например, сдвинем содержимое регистра bx вправо таким образом, чтобы нулевой бит стал единичным:


.386

        mov     bx,0002h        ;bx=0000 0010b

...

        bsf     cx,bx   ;cx=0001h



        jz      null

        shr     bx,cl   ;bx=0000 0001b

...

null:


        

См. также: урок 9, 12 и команду bsr

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 и команду bsf

BSWAP


(Byte SWAP)

Перестановка байтов

 


Схема команды: 

bswap источник 

Назначение:

  • изменение порядка следования байтов;

  • переход от одной формы адресации к другой.

Под формой адресации здесь понимается принцип "младший байт по младшему адресу" или обратный ему. Существует ряд систем, например использующих микропроцессоры Motorola или большие ЭВМ, где применяется принцип размещения многобайтовых значений обратный тому, который используется в микропроцессорах Intel. Поэтому эту команду можно использовать для разработки программ-конверторов между подобными платформами и IBM РС.

Синтаксис

Алгоритм работы: Схема алгоритма

Состояние флагов после выполнения команды:

выполнение команды не влияет на флаги

Применение:

Команду bswap используют для изменения формы адресации. В качестве операнда может быть указан только 32-разрядный регистр. Эта команда используется в моделях микропроцессоров, начиная с i486.



.486

        mov     ebx,1a2c345fhh

        bswap   ebx     ;ebx=5f342c1ah

        


См. также: урок 7, и команду xchg

BT


(Bit Test)

Проверка битов

 


Схема команды: 

bt источник,индекс 

Назначение: извлечение значения заданного бита в флаг cf.

Синтаксис

Алгоритм работы:

  • получить бит по указанному номеру позиции в операнде источник;

  • установить флаг cf согласно значению этого бита.

Состояние флагов после выполнения команды:

00

CF

r

Применение:

Команду bt используют для определения значения конкретного бита в операнде источник. Номер проверяемого бита задается содержимым второго операнда (значение числом из диапазона 0...31). После выполнения команды, флаг cf устанавливается в соответствии со значением проверяемого бита.



.386

        mov     ebx,01001100h

        bt      ebx,8   ;проверка состояния бита 8 и установка cf= в 1

        jc      m1      ;перейти на m1, если проверяемый бит равен 1

...

        


См. также: уроки 9, 12 и команды btc, btr, bts, test




Поделитесь с Вашими друзьями:
1   ...   5   6   7   8   9   10   11   12   ...   52




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница