Логические команды

Опубликовано февраля 3, 2018 в Архитектура процессора Intel

Команды AND, OR, XOR реализуют поразрядные логические операции над операндами sre и dst, помещая результат в операнде-приемнике.

AND (logical AND — логическое И) — выполняет операцию поразрядного логического умножения (конъюнкции).

Каждый бит результата команды AND равен 1, если соответствующие биты обоих операндов равны 1, иначе бит результата равен 0.

OR (logical inclusive OR — логическое включающее ИЛИ) — выполняет операцию поразрядного логического сложения (дизъюнкции).

Каждый бит результата команды OR равен 0, если соответствующие биты обоих операндов равны 0, в противном случае бит результата равен 1.

XOR (logical exclusive OR — логическое исключительное ИЛИ) -выполняет операцию исключительного ИЛИ (сложение по модулю два).

Каждый бит результата равен 1, если соответствующие биты обоих операндов различны, в противном случае бит результата равен 0.

TEST (logical compare — логическое сравнение) — выполняется как команда неразрушающего логического умножения, единственным результатом которой является установка арифметических флагов для последующего условного перехода.

Один из операндов содержит проверяемую величину, а второй — маску, соответствующую проверяемым битам.

NOT (negate, one’s complement — инверсия, дополнение до 1, логическое НЕ) — заменяет каждый бит его дополнением, инвертирует операнд.

Логические команды

Влияние логических команд на арифметические флаги:

Все логические команды, кроме команды NOT, оказывают на арифметические флаги следующее влияние: флаги OF и CF сбрасываются, флаг AF принимает неопределенное значение, остальные флаги (ZF, SF, PF) устанавливаются по общим правилам. Команда NOT не изменяет значения флагов.

Рекомендации по использованию команд:

  1. команду AND целесообразно использовать для выделения разрядов по единичной маске и сброса разрядов по ну левой маске;
  2. команду OR — для установки разрядов по единичной маске;
  3. команду XOR — для инвертирования разрядов по единичной маске и сброса(обнуления)операндов;
  4. команду TEST — для проверки состояния выделяемых по единичной маске разрядов; команду NOT — для получения обратного (инверсного) кода.

Примеры:

  • AND AL, OFH — выделение младшей тетрады регистра AL;
  • AND DX, 5555Н — сброс (обнуление) нечетных битов регистра DX (нумерация разрядов ведется справа налево, начиная с нуля);
  • OR АН, ОААН — установка нечетных битов регистра АН;
  • XOR AL, OF) H — инвертирование старшей тетрады регистра AL;
  • XOR АН, АН — сброс регистра АН, например перед командой DIV DL, для которой делимое размещается в байтном регистре AL;
  • TEST АН, ) FFH — проверка содержимого регистра АН, например, после команды деления DIV / IDIV на байтный делитель с целью дальнейшего перехода по нулевому значению остатка (по флагу ZF);
  • TEST AL,1 — проверка четности содержимого регистра AL (дальнейший переход по флагу ZF);
  • NOT АН — инвертирование содержимого регистра АН.

На этом сайте, только оригинальные эксклюзивные аксессуары, в том числе чехол Samsung Galaxy S9. По мимо этого ассортимента вы найдете кучу полезных вещей, которые не оставят вас равнодушным!