4893

Применение логических инструкций

Доклад

Информатика, кибернетика и программирование

Применение логических инструкций Логические команды служат для сброса или установки отдельных бит в байте или слове. Они включают булевы операторы НЕ, И, ИЛИ, исключающее ИЛИ и операцию тестирования, которая устанавливает флаги, но не изменяет значе...

Русский

2012-11-28

43 KB

2 чел.

Применение логических инструкций

Логические команды служат для сброса или установки отдельных бит в байте или слове. Они включают булевы операторы НЕ, И, ИЛИ, исключающее ИЛИ и операцию тестирования, которая устанавливает флаги, но не изменяет значения своих операндов.

Логические инструкции

not dst

Инструкция not инвертирует все биты байта или слова.

and dst, src

Инструкция and выполняет операции логическое И двух операндов (байтов или слов) и возвращает результат в операнд-приемник. Бит результата устанавливается в 1, если установлены в 1 оба соответствующих ему бита операндов, и устанавливаются в 0 противном случае.

or dst, src

Инструкция or выполняет операции логическое ИЛИ двух операторов (байтов или слов) и помещает результат на место операнда-приемника. Бит результата устанавливается в 1, если равен 1 хотя бы один из двух соответствующих ему битов операндов и устанавливается в 0 в противном случае.

xor dst, src

Инструкция xor выполняет операцию логическое исключающее ИЛИ двух операндов и помещает результат на место операнда-приемника. Бит результата устанавливается в 1, если соответствующие ему биты операндов имеют противоположные значения, и устанавливается в 0 в противном случае.

test dst, src 

Инструкция test выполняет логическое И двух операндов (байтов или слов), модифицирует флаги, но результат не возвращает, т.е. операнды не изменяются.

В таблице 4.1. приведены значения регистра флагов, устанавливаемые логическими командами.

Таблица 4.1

Логические инструкции

Мнемокод

Флаги

Действие

Код

Операнды

O

S

Z

A

P

C

and

dst, src

0

x

x

u

x

0

логическое И

or

dst, src

0

x

x

u

x

0

логическое ИЛИ

xor

dst, src

0

x

x

u

x

0

логическое исключающее ИЛИ

not

Dst

-

-

-

-

-

-

логическое НЕТ

test

dst, src

0

x

x

u

x

0

логическое И без изменения dst

Примечание:  

-

флажок не модифицируется;

х

Устанавливается или сбрасывается в соответствии с результатом;

u

не определен;

0

Сбрасывается в 0.

  1.  Примеры использования логических команд

Установить 3 и 0 биты в регистре аl, остальные биты не изменять.

or al, 00001001b

Сбросить 4 и 6 битвы в регистре al, остальные биты не изменять.

and al, 10101111b

Инвертировать 2 и 4 биты в регистре al, остальные биты не изменять.

xor al, 00010100b

Перейти на метку LAB, если установлен 4 бит регистра al, в противном случае продолжить выполнение программы.

test al, 00010000b

jnz LAB

продолжаем

. . .

LAB:

Посчитать число единиц в регистре al, рассматривая байт, как набор бит.

mov cx, b   ; число сдвигов

xor bl, bl   ; обнуление BL

LL:  shl al, 1   ; сдвиг влево на один разряд

jnc NO    ; переход, если нет переноса

inc bl    ; иначе увеличить BL

NO:  loop LL   ; возврат, если cx 0