Программирование на Ассемблере


Группа команд: проверить и изменить


Команды проверяют значение заданного бита (записывают его содержимое в бит C) и меняют значение в соответствии с заданным кодом. Первый операнд задает проверяемое и изменяемое данное, второй - номер бита. В качестве первого операнда может быть регистр и память размером 1, 2 или  4 байта. Второй операнд задается константой или регистром. Команды для проверки и изменеия заданных битов представлены в табл. 10.2

Таблица 10.2. Команды для проверки и изменеия заданных битов

Назначение

Код

Выполняемые действия

Проверка бита



Bt

C=(oп1 & (1<<оп2))>> оп2

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

Bts

C=(oп1 & (1<<оп2))>> оп2;

oп1 |= (1<<оп2))

Проверка и сброс бита

Btr

C=(oп1 & (1<<оп2))>> оп2;

oп1 &= (~(1<<оп2))

Проверка и инвертирование бита

Btc

C=(oп1 & (1<<оп2))>> оп2;

oп1 ^= (1<<оп2))

Примеры использования команд

Пример 1. Вычислить сумму всех битов, стоящих на четных местах в двойном слове

p486

ideal

model  flat

extrn ExitProcess:proc

dataseg

x          dd        0a5a5a5a5h

s           dd        ?

codeseg

begin:

xor       edx, edx; s=0

mov     eax, [x]

mov     ecx, 16

mov     ebx, 0

for:

bt         eax, ebx

adc      edx, 0

add      ebx, 2

loop     for

mov     [s], edx

call      ExitProcess

end begin

Программа выдает ответ 8.



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