![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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
Команда 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...; нулевое значение?
|