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 вообще требует долгого обращения к оперативной памяти.
Другие языки программирования и технологии
Для чего служит операция xor в ассемблере. Буду очень признательна за полный ответ или ссылку.
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 устанавливает биты в байте единичками
Она инвертирует биты единичками.
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 устанавливает биты в байте единичками
Похожие вопросы
- Вопросы про функции. За лучший и полный ответ 50 баллов
- Добрый вечер! Буду очень признательна, если поможите написать в Pascal-е программу нижеследующей задачи:
- Кто сможет написать понятную программу на Pascal ABC? нужно реализовать шифр Плейфера Буду вам очень признателен
- Всем доброго времени суток господа! Не поможете решить данную задачку? Буду очень признателен! Заранее спасибо! Язык с++
- Функции в С++ .50 ОЧКОВ за лучший и полный ответ.
- Несколько вопросов про синтаксиз С++ .За отличный и полный ответ 50 баллов.
- Лентяи задают тут вопросы, зачем вы даете полные ответы? Нужно помогать, а не давать готовые решения. Или я не прав?
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)