Top.Mail.Ru
Ответы

Для чего служит операция xor в ассемблере. Буду очень признательна за полный ответ или ссылку.

По дате
По рейтингу
Аватар пользователя
Новичок
16лет

xor a, b
делает операцию xor побитово для 2 чисел, присваивает результат первому операнду

xor - логическая операция "не-или", эквивалентная операции "не равно" ( <> )

например
a = 3
b = 10
двоичная запись
a = 0011
b = 1010

результат xor a, b
1001
( если соответствующие двоичные цифры не равны, то единичка, если равны, то нуль )

Айййй нафига я все это писал, в Википедии есть же все. А я и не знал. :(

В википедии не написано:
Раньше, когда компьютеры были не особо мощные, среди программистов считалось особым шиком обнулять переменные вот так:
xor a, a
вместо
sub a,a или mov a,0

xor операция выполнялась на один такт процессора, когда sub только на 2 такта, а mov a,0 вообще требует долгого обращения к оперативной памяти.

Аватар пользователя
Мыслитель
7лет

XOR это аналог комманды NOT, но только более подробная (побитная).
Она инвертирует биты единичками.
Xor можно использовать для инвертирования отдельных битов в байте или части байта.
Нр. Чтобы инвертировать только EA в EAX, команда not не годится поэтому можно написать так
xor EAX,11111111111111110000000000000000b.
Биты в позиции где поставлены единички инвертируются. а AX в EAX останется не тронутым.
---------------------------------------------------------------------------------------------
Ещё добавлю:
And
1)удаляет биты из байта ноликами,
например: and eax,11111111111111110000000000000000;ax в eax будет стёрто
2)служит для частичного заполнения байта (вроде частичного OR)
например:
mov edi,000fh;ноликами пометим пространство для копирования
and edi,esi; скопирует из esi в edi, только 12 старших разрядов, а 4 нижнижние в edi останутся не тронутыми
Должно было быть как-то так or edi,esi,000fh(если бы с тремя операндами)

а ОR устанавливает биты в байте единичками

Аватар пользователя
Ученик
9лет

Вот справочник по Асемблеру для AVR, сам пользуюсь:
[ссылка заблокирована по решению администрации проекта]