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

B

386+ BTR Проверка и сброс бита

Команда btr проверяет определенный бит в слове, заданном первым операндом, копирует его значение в флаг CF и сбрасывает. Номер бита выступает в качестве второго операнда. Первым операндом команды btr может служить регистр или ячейка памяти, вторым – регистр или непосредственное значение.

В команде допустимо использование как 16-битовых, так и 32-битовых операндов, но и первый, и второй операнды должны быть одного типа (за исключением случая, когда второй операнд – константа).

Пример 1:

mov AX,00Fh; Анализируемое данное
btr АХ, 5; AX=00DFh. Бит 5 был = 1
;Сброс бита 5, ZF=1

Пример 2:

mov AX,00FFh; Анализируемое данное
btr AX, 8; AX=0FFh Бит 8 был =0
;Остался 0, ZF=0

Пример 3:

mov AX,8001h; Анализируемое данное
mov BX,15; Номер проверяемого бита
btr AX,BX; AX=0001h Бит 15 был = 1
;Сброс бита 15, ZF=1

Пример 4:

;В полях данных
mem dw IFh
;В программном сегменте:
;Анализируемое данное
btr mem,10; mem=lFh Бит 10 был = 0
;Остался 0, ZF=0

386+ BTS Проверка и установка бита

Команда bts проверяет определенный бит в слове, заданном первым операндом, копирует его значение в флаг CF и устанавливает. Номер бита выступает в качестве второго операнда. Первым операндом команды bts может служить регистр или ячейка памяти, вторым – регистр или непосредственное значение. В команде допустимо использование как 16-битовых, так и 32-битовых операндов, но и первый, и второй операнды должны быть одного типа (за исключением случая, когда второй операнд – константа).

Пример 1:

mov AX,OOFFh; Анализируемое данное
bts AX, 5; AX=OOFFh Бит 5 был = 1
;Остался 1, ZF=1

Пример 2:

mov AX,OOFFh; Анализируемое данное
bts AX, 8; AX=lFFh Бит 8 был = 0
;Установка бита 8, ZF=0

Пример 3:

mov AX,8001h; Анализируемое данное
mov BX,15; Номер проверяемого бита
bts AX,BX; AX=8001h Бит 15 был = 1
;Остался 1, ZF=1

Пример 4:

; В полях данных
mem dw IFh; Анализируемое данное
;В программном сегменте:
bts mem,10; mem=4lFh Бит 10 был = 0
; Установка бита 10, ZF=0
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.