11.09.2006, 20:52
общий
это ответ
Здравствуйте, Whiteman!
Команды OR, AND, XOR выполняют побитовые операции ИЛИ, И, исключающее ИЛИ соответственно.
Их формат - <команда> <операнд 1>,<операнд 2>.
i-ый бит результата формируется из i-ых битов операндов в соответствии с таблицей:
оп1 0 0 1 1
оп2 0 1 0 1
OR 0 1 1 1
AND 0 0 0 1
XOR 0 1 1 0
Например, инструкция OR AL,DL при AL=15h и DL=78h записывает в AL число 7Dh, так как
AL=00010101
DL=01111000
рез=01111101.
Подобное на языке высокого уровня - AL = AL or DL;.
Немного о флагах.
- CF и OF всегда обнуляются
- ZF устанавливается только в случае, если результат = 0
- SF копирует старший бит результата
- PF устанавливается при чётном числе установленных битов в результате
- AF меняется непредсказуемым образом
- остальные флаги не меняются
Используются эти команды, например, для установки(OR), сброса(AND) и инвертирования(XOR) бит. Так, команда AND AL,0FCh сбрасывает 2 младших бита AL.
Команда XOR используется для обнуления регистров, например, XOR AX,AX. Выгода - в меньшем по сравнению с MOV AX,0 числе байт в машинном представлении.
Иногда возникает необходимость проверить значение регистра на ноль или на знак. Надо соответствующим образом установить флаги. Для этого можно применить AND AX,AX и переходы JZ, JS. Выгода опять-таки в меньшем по сравнению с CMP AX,0 размере машкода.
Удачи!