Пример 1 Сканирование битов

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 и затем инвертирует значение этого бита.

Команды сдвига

Команды этой группы также обеспечивают манипуляции над отдельными битами операндов, но иным способом, чем логические команды, рассмотренные выше. Все команды сдвига перемещают биты в поле операнда влево или вправо в зависимости от кода операции.
Все команды сдвига имеют одинаковую структуру:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: