→ Пошук по сайту       Увійти / Зареєструватися

Команди асемблера для Intel: 386+ BSF, 386+ BSR, 486+ BSWAP, 386+ ВТС

386+ 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  


 Приклад 4

; У полях даних

mem dw 9000h ; Аналізоване дане

;У програмному сегменті:

bsr AX, mem;AX=000Fh=15, Zf=0 

 

486+ BSWAP Обмін байтів


Команда bswap змінює порядок байтів в своєму єдиному операнді, як який може виступати тільки 32-розрядний регістр загального призначення. Биті 7...0 обмінюються з бітами 31...24, а биті 15... 18 з бітами 23...16. Іншими словами, нумерація байтів регістра змінюється на протівополжную (замість 3, 2, 1,0 - 0, 1, 2, 3). Команда не впливає на прапори процесора.

Приклад

mov ЕАХ, 01234567h

bswapeax ;EAX=67452301h 

 

386+ ВТ Перевірка бита


Команда bt дозволяє визначити, чи встановлений в заданому слові певний біт. Аналізоване слово виступає як перший операнд, номер бита - як другий. Першим операндом команди bt може служити регістр або елемент пам'яті, другим - регістр або безпосереднє значення. У команді допустиме використання як 16-бітових, так і 32-бітових операндів, але і перший, і другий операнди мають бути одного типу (за винятком випадку, коли другий операнд - константа).
Значення біта, що перевіряється, копіюється в прапор CF.

Приклад 1

mov Ax,00ffh ;Анализируемое дане

bt Ax,5 ; битий 5=1, Zf=1 

Приклад 2

mov Ax,00ffh ;Анализируемое дане

bt Ax,8 ;бит 8=0, Zf=0 

Приклад 3

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

mov Bx,15 ;Номер біта, що перевіряється

bt АХ, ВХ ;бит 15 = 1, Zf=1 

 

Приклад 4

;У полях даних

mem dw Ifh ;Анализируемое дане

;У програмному сегменті:

bt mem, 4 ;бит 4 = 1, Zf=1 

 

386+ ВТС Перевірка і інверсія бита


Команда btc перевіряє певний біт в слові, заданому першим операндом, копіює його значення в прапор CF і інвертує. Номер біта виступає як другий операнд. Першим операндом команди btc може служити регістр або елемент пам'яті, другим - регістр або безпосереднє значення. У команді допустиме використання як 16-бітових, так і 32-бітових операндів, але і перший, і другий операнди мають бути одного типу (за винятком випадку, коли другий операнд - константа).

Приклад 1

mov Ax,00ffh ;Анализируемое дане

btc АХ, 5 ;AX=00DFh Битий 5 був = 1

;Скидання бита 5, Zf=1 

Приклад 2

mov Ax,ooffh /аналізіруємоє дане

btc АХ, 8 ;AX=lFFh Битий 8 був = О

;Установка бита 8, Zf=0 

Приклад 3

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

mov Bx,15 ;Номер біта, що перевіряється

btc Ax,bx ;AX=0001h, Zf=1 

 

Приклад 4

; У полях даних

mem dw Ifh

;У програмному сегменті: ; Аналізоване дане

btc mem, I /mem=leh, Zf=1 

загрузка...
Сторінки, близькі за змістом