Команды AND, OR, XOR, NOT
Команды AND, OR, XOR, NOT - это набор команд для выполнения побитовых логических операций над числами. Команда AND (логическое "И", логическое умножение или конъюнкция) выполняется следующим образом: если бит первого числа установлен в 1 и бит второго числа установлен в 1, то и бит результата тоже будет установлен в 1, иначе бит результата будет сброшен в 0.
Команда OR (логическое "ИЛИ", логическое сложение или дизъюнкция) устанавливает бит результата в 1, если бит первого или второго числа установлен в 1.
Команда XOR (исключающее "ИЛИ", строгая дизъюнкция) работает как и команда OR, но если биты обоих чисел установлены в 1, то в результате будет бит сброшенный в 0.
Команда NOT (инверсия) просто устанавливает биты результата на на противоположные от битов числа, то есть если в числе был бит установленный в 1, то в результате будет сброшенный в 0 и наоборот.
Команда AND
Синтаксис: | AND op1,op2 |
Операнды: | op1 - r/m8, r/m16, r/m32 op2 - r/m8, r/m16, r/m32, i8, i16, i32 |
Назначение: | Логическое "И" |
Процессор: | 8086+ |
Флаги: | Флаги OF и CF очищаются. Флаги PF, SF и ZF устанавливаются в соответствии с результатом. |
Комментарий: | Команда AND выполняет побитовое "логическое И" над операндами. Результат помещается в первый операнд и выполняется соответствующая установка флагов. |
Ограничения: | Не допускается использовать ячейки памяти в качестве обоих операндов одновременно. |
Примеры: |
mov ax,0001h and ax,1000h ;AX=0000h |
Команда OR
Синтаксис: | OR op1,op2 |
Операнды: | op1 - r/m8, r/m16, r/m32 op2 - r/m8, r/m16, r/m32, i8, i16, i32 |
Назначение: | Логическое "ИЛИ" |
Процессор: | 8086+ |
Флаги: | Флаги OF и CF очищаются. Флаги PF, SF и ZF устанавливаются в соответствии с результатом. Флаг AF не определен. |
Комментарий: | Команда OR выполняет побитовое "логическое ИЛИ" над операндами. Результат помещается в первый операнд и выполняется соответствующая установка флагов. |
Ограничения: | Не допускается использовать ячейки памяти в качестве обоих операндов одновременно. |
Примеры: |
mov ax,0001h or ax,1000h ;AX=1001h |
Команда XOR
Синтаксис: | XOR op1,op2 |
Операнды: | op1 - r/m8, r/m16, r/m32 op2 - r/m8, r/m16, r/m32, i8, i16, i32 |
Назначение: | Логическое исключающее "ИЛИ" |
Процессор: | 8086+ |
Флаги: | Флаги OF и CF очищаются. Флаги PF, SF и ZF устанавливаются в соответствии с результатом. Флаг AF не определен. |
Комментарий: | Команда XOR выполняет побитовое "логическое исключающее ИЛИ" над операндами. Результат помещается в первый операнд и выполняется соответствующая установка флагов. |
Ограничения: | Не допускается использовать ячейки памяти в качестве обоих операндов одновременно. |
Примеры: |
mov ax,0001h xor ax,1000h ;AX=1001h xor ax,1000h ;AX=0001h |
Команда NOT
Синтаксис: | NOT op1 |
Операнды: | op1 - r/m8, r/m16, r/m32 |
Назначение: | Инверсия |
Процессор: | 8086+ |
Флаги: | Не изменяются |
Комментарий: | Команда NOT выполняет побитовое инвертирование операнда. Каждый бит операнда меняет свое значение на противоположное. |
Ограничения: | Нет |
Примеры: |
mov al,00010110b not al ;AL=11101001b |
Комментарии (0)