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

         

Команда bswap изменяет порядок байтов


; В полях данных
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

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