Команды 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