Логические операции.

Логическая операция — это операция над выражениями логического (булевского) типа, соответствующая некоторой операции над высказываниями в алгебре логики. Как и высказывания, логические выражения могут принимать одно из двух истинностных значений — «истинно» или «ложно».

Сегодня мы рассмотрим наиболее применяемые логические операции в языке Assembler, а именно:

  • Логическое побитовое И;
  • Логическое побитовое ИЛИ;
  • Логическое НЕ (инверсия);
  • Исключающее побитовое ИЛИ.

Логическое побитовое И

В Assembler этот оператор сравнивает два регистра по одному биту. Для выполнения операции логического И предназначена команда and. У этой команды 2 операнда, результат помещается на место первого операнда. Пример:

mov bx, 01101001b
mov bl, 01000111b
and bx, bl

Результатом этой операции будет 01000001. Как и говорилось выше результат записывается в регистр, который стоит первым после оператора and, в нашем случае — это регистр bx, то есть теперь его значение поменялось на 01000001.

Логическое побитовое ИЛИ

В Assembler логическое побитовое ИЛИ обозначается командой or, и синтаксис идентичен синтаксису команды and, по своей сути он представляет побитовое сложение. Часто это команда используется для установки в 1 определённых битов числа. Пример:

mov bx, 01101001b
mov bl, 01000111b
or bx, bl

Выполнение этой инструкции вернет 01101111 и поместит это двоичное число в регистр bx.

Логическое НЕ (инверсия)

Каждый бит операнда меняет своё значение на противоположное (0 → 1, 1 → 0). Операция выполняется с помощью команды not. У этой команды только один операнд. Результат помещается на место операнда. Эта команда не изменяет значения флагов. Пример:

not byte[bx] ;Инверсия байта по адресу в BX

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

Исключающим ИЛИ эта операция называется потому, что результат равен 1, если один бит равен 1 или другой равен 1, а случай, когда оба равны 1, исключается. Ещё эта операция напоминает сложение, но в пределах одного бита, без переноса. 1+1=10, но перенос в другой разряд игнорируется и получается 0.

Для выполнения этой операции предназначена команда xor. У команды два операнда, результат помещается на место первого. Команду можно использовать для инверсии определённых битов операнда. Примеры:

    xor si,di           ;SI = SI ^ DI
    xor al,11110000b    ;Инверсия старшей тетрады AL
    xor bp,8000h        ;Инверсия знакового бита BP

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *