XOR приемник,источник
TESTприемник,источник
Операндами команд AND, OR и XOR могут быть байты или слова. В этих командах можно сочетать два регистра, регистр с ячейкой памяти или непосредственное значение с регистром или ячейкой памяти. Результаты выполнения команд приведены в таблице 8.2.
Команда AND маскирует (обнуляет) некоторые биты, после чего можно выполнить дальнейшую обработку остальных битов. В каждой позиции бита, где оба операнда содержат 1, операнд-приемник также будет содержать 1. В тех же позициях, где операнды имеют любую другую комбинацию значений, операнд-приемник будет содержать 0.
Приведем несколько примеров команд AND:
AND АХ,ВХ ;Выполнить AND над двумя регистрами
AND AL,MEM_BYTE ;Выполнить AND над регистром и ячейкой памяти
AND MEM_BYTE ; или наоборот
AND BL,11O1B ;Выполнить AND над константой и регистром
AND TABLE[BX],MASK3 ; или ячейкой памяти
Рассмотрим следующий пример применения команды AND. Пусть порт 200 соединен с 16-битовым регистром состояния внешнего устройства системы и бит 6 показывает, включено (1) или выключено (0) устройство. Если Ваша программа может продолжать работу только в случае, когда устройство включено, то она должна содержать следующий цикл:
M1: IN АХ,200 ;Прочитать состояние устройства
AND АX,000000100000B ;Изолировать индикатор включения
JZ M1 ;Подождать включения питания,
... ; а затем продолжить работу
Команда JZ (jump if zero - перейти если нуль), заставляет микропроцессор вернуться к команде IN с меткой M1, если флаг нуля ZF равен 1, и перейти к следующей команде в противном случае. В нашем примере флаг ZF равен 1 только в том случае, когда индикатор включения (бит 6) равен 1, так как команда AND обнуляет все остальные биты регистра АХ.
Команда OR полагает равным 1 те биты операнда-приемника, в позициях которых хотя бы один из операндов содержит 1. Эта команда обычно используется для принудительного присваивания 1 заданным битам. Например, команда
OR BX,0C000H
устанавливает два старших бита (14 и 15) регистра ВХ равными 1 и оставляет другие биты не измененными.
Команда XOR используется, если надо выяснить, в каких битах значения операндов различаются, или если надо обратить состояния заданных битов. Команда XOR полагает равным 1 все те биты приемника, в позициях которых операнды имеют различные значения, иначе говоря, те биты, в позициях которых один из операндов имеет знамение-0, а другой - 1. Если оба операнда содержат в данной позиции либо 0, либо 1, то команда XOR обнуляет этот бит приемника.
Например, команда
XOR ВХ,0С000Н
обращает состояния двух старших битов регистра ВХ (14 и 15) и сохраняет остальные биты неизменными.
Таблица 8.2 Результаты исполнения команд AND, OR и XOR
Источник | Приемник | Результат | |||
AND | OR | XOR | |||
Команда TEST (test - проверить) выполняет операцию AND над операндами, но воздействует только на флаги и не изменяет значения операндов. Команда TEST изменяет флаги точно так же, как команда AND: она обнуляет флаги CF и OF, изменяет флаги PF, ZF и SF, а флаг AF оставляет неопределенным.
Когда вслед за командой TEST указана команда JNZ (jump if not zero - перейти, если не нуль), переход произойдет только в том случае, если хотя - бы один бит у обоих операндов содержат 1. Несколько примеров:
1. Test BL,11110000B ; Любой из левых битов в BL
Jnz . . . ; равен 1?
2. Test AL,00000001B ; Регистр AL содержит
Jnz . . . ; нечетное значение?
3. Test DX,0FFFFH ;Регистр DX содержит
Jz . . . ; нулевое значение?
Дата добавления: 2016-01-26; просмотров: 1337;