Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает

Вид материалаКонспект
См. также
Схема команды
См. также
См. также
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   ...   57

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