Команды логического преобразования данных

Логическиекоманды – and, or, xor, not, test.

Andоп1, оп2 – выполняет действие побитового логического умножения между оп1 и оп2, а затем заносит получившийся результат  в оп1.

Orоп1, оп2 – выполняет действие побитового ИЛИ, а затем заносит получившийся результат в оп1. Аналогично операция Xor оп1, оп2 – выполняет Исключающее ИЛИ.

Notоп1 – выполняет побитовое логическое отрицание и заносит результат в оп1.

Testоп1, оп2 – аналогична операции Andоп1, оп2, с той лишь разницей, что результат не заносится в оп1. При этом изменяются состояние флагов zf, sf, и pf, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния.

Последняя команда применяется для проверки состояния заданных бит:

Testоперанд_1, операнд_2 (проверить операнд_1)

Проверяемые биты операнд_1 в маске (операнд_2) должны иметь единичное значение. Результатом команды является установка значения флага нуля zf.

  • Если zf=0, то в результате логического умножения получился нулевой результат, то есть один единичный бит маски не совпал с соответствующим единичным битом операнд_1;
  • Если zf=1, то в результате логического умножения получился ненулевой результат, то есть хотя бы один единичный бит маски совпал с соответствующим единичным битом операнд_1;

Пример: test eax,00000010h

                Jz     m1       ;переход если 2-й бит равен 1.

Ссылка на основную публикацию
Adblock detector