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

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

Сегодня мы рассмотрим наиболее применяемые логические операции в языке 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

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

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

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

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Команды работы с битами.

Команды работы с битами.

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

 
Основы создания макросов в Assembler.

Основы создания макросов в Assembler.

Макросы — это шаблоны для генерации кода. Один раз создав макрос, можно использовать его во многих местах в коде программы. Макросы делают процесс программирования на

 
Синтаксис объявления меток.

Синтаксис объявления меток.

Метка в ассемблере – это символьное имя, обозначающее ячейку памяти, которая содержит некоторую команду. Метка может содержать следующие символы: Буквы (от A до Z и

 
Локальные переменные.

Локальные переменные.

Локальные переменные в Assembler используются для хранения промежуточных результатов во время выполнения процедуры. В отличие от глобальных, эти переменные являются временными и создаются при запуске

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: