masm
model small
stack 256
.data;сегмент данных
.code;сегмент кода
main:;точка входа в программу
mov ax,@data
mov ds,ax
;...
.486;это обязательно
xor ax,ax
mov al,02h
bsf bx,ax;bx=1
jz m1;переход, если al=00h
bsr bx,ax
m1:
;...
mov ax,4c00h;стандартный выход
int 21h
end main
В последних моделях микропроцессоров Intel в группе логических команд появилось еще несколько команд, которые позволяют осуществить доступ к одному конкретному биту операнда. Операнд может находиться как в памяти, так и в регистре общего назначения. Положение бита задается смещением бита относительно младшего бита операнда. Значение смещения может задаваться как в виде непосредственного значения, так и содержаться в регистре общего назначения. В качестве значения смещения вы можете использовать результаты работы команд bsr и bsf. Все команды присваивают значение выбранного бита флагу cf.
§ bt операнд,смещение_бита (Bit Test) — проверка бита.
Команда переносит значение бита в флаг cf.
bt ax,5;проверить значение бита 5
jnc m1;переход, если бит = 0
§ bts операнд,смещение_бита (Bit Test and Set) — проверка и установка бита.
|
|
Команда переносит значение бита в флаг cf и затем устанавливает проверяемый бит в 1.
mov ax,10
bts pole,ax;проверить и установить 10-й бит в pole
jсm1;переход, если проверяемый бит был равен 1
§ btr операнд,смещение_бита (Bit Test and Reset) — проверка и сброс бита.
Команда переносит значение бита в флаг cf и затем устанавливает этот бит в 0.
§ btc операнд,смещение_бита (Bit Test and Convert) — проверка и инвертирование бита.
Команда переносит значение бита в флаг cf и затем инвертирует значение этого бита.
Команды сдвига
Команды этой группы также обеспечивают манипуляции над отдельными битами операндов, но иным способом, чем логические команды, рассмотренные выше. Все команды сдвига перемещают биты в поле операнда влево или вправо в зависимости от кода операции.
Все команды сдвига имеют одинаковую структуру: