Консультация № 12303
09.09.2004, 10:41
0.00 руб.
0 4 4
Здравствуйте Уважаемые Эксперты!
Вопрос наверное из курьезных,но все же.
Объясните плз. операции типа битовый сдвиг вл.впр.,
XOR AND OR.В смысле где они применяются на практике.
XOR маска ,проверка результата ,а остальные где и как
зачем нужны?
Зарание благодарен!

Обсуждение

Неизвестный
09.09.2004, 10:41
общий
это ответ
Приветствую Вас, vlad!
OR, XOR, AND часто используюся при работе с портами (In/Out). Например при программировании прерываний, сом портов, таймера. Часто какой то порт работает как триггер. Т.е. нужно установить, например 3 бит чтобы разрешить прерывания.
ORом ты его ставишь наверняка, ANDом снимаешь также наверняка, а XORом меняешь на обратный.
Кроме того AND например часто используют в процедурах перевода числа в ASCII последовательность(для выделения старшего/младшего полубайта).
Сдвиги часто заменяют умножение и деление.
Ну и естествено при шифровке, перекодировке.
Вообщем трудно себе представить все возможные приложения этих комманд.
Неизвестный
09.09.2004, 10:41
общий
это ответ
Добрый день, vlad!
Нужны они ВЕЗДЕ. Можно найти почти бесконечное количество возможностей применения этих директив. Приведу элементарный пример использования каждого:
AND, в определённом двойном славе младшие десять бить представляют нужную нам информацию, and eax,3FFh оставит лишь младшие 10 бит в еах.
OR, нам надо установить биты 5 и 17, при этом не изменяя значения остальных битов, or eax,20020h произведёт нужную нам операцию!
Неизвестный
09.09.2004, 10:41
общий
это ответ
Добрый день, vlad!
AND - логическое "И"
OR - -//- "ИЛИ"
XOR - исключающее "ИЛИ"
чтобы понимать, для чего это надо, надо знать и понимать двоичную систему счисления.
вот двоичное число - 10010100, битовый сдвиг сдвигает влево и вправо каждую "циферку", т.е. получится 00101000 или 01001010. а чтобы понять про смысл логических операций, нужно в инете поискать слова "операция логическое или", а лучше всего скачать учебник Юрова по ассемблеру.
Удачи!
Неизвестный
09.09.2004, 10:41
общий
это ответ
Доброе время суток, vlad!
Ну, это очень полезные команды! Например, при помощи сдвигов можно выполнять умножение и деление на числа, равные степени 2, например:
eax * 2 = shl eax, 1
eax * 64 = shl eax, 6
eax / 2 = shr eax, 1
eax / 64 = shr eax, 6
XOR, AND, OR
Применение этих команд неограничено :-)
Например, при помощи XOR можно обнулить регистр: xor eax, eax
При помощи AND и OR - проверить регистр на равенство 0:
and eax, eax ; or eax, eax
jz ZERO
Кроме этого, команда AND используется для сброса нужных битов по маске, а команда OR - для их установки. С помощью XOR нужные биты можно инвертировать.
Форма ответа