Предыдущий раздел ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА Следующий раздел

1.2.2. Логические операторы

Они используются для установки и сброса битов в слове или в байте. В качестве операндов могут выступать два регистра, регистр с ячейкой ОП или непосредственное значение с регистром или ячейкой ОП.

1)and (логическое И) сравнивает два операнда (слова или байты) побитно. Результат записывается на место первого операнда. Если оба из cравниваемых битов  равны 1, то результат равен 1, во всех остальных случаях результат равен 0. Например, пусть (AL) = 10101111, а (ВH) = 11100000, тогда “and  al, bh”  запишет в  al  10100000. Примеры:

 

and ax, bx                  ;  Операция AND над двумя регистрами

and ax, [Mem_wor]    ; Операция AND над регистром и словом ОП

and [Mem_byte], al     ; Операция AND над байтом ОП и регистром

and bl, 11110000b     ; Обнуление младших 4-х битов регистра BL

and [Mem_byte], 00001111b   ; Обну-е старших 4-х битов байта ОП

 

2)or (логическое ИЛИ) сравнивает два операнда (слова или байты) побитно. Если хотя бы один из сравниваемых битов равен 1, то результат равен 1, если оба сравниваемых бита равны 0, то результат равен 0. Например, пусть (AL) =10101111, а (BH) = 11100000, тогда  “or al, bx”   запишет в AL  11101111. Примеры:

 

or      bl, 11110000b    ; Установка в 1 старших 4-х и сохранение  значений 4-х младших битов регистра BL

or      [Mem_byte], 00001111b  ; Сохранение значений 4-х старших и установка в 1 4-х младших битов байта ОП

 

3)xor (исключающее ИЛИ) сравнивает два операнда (слова или байты) побитно.  Если один из сравниваемых битов равен 0, а другой 1, то результат есть 1, если оба сравниваемых бита одинаковы (оба – 0 или оба – 1), то результат есть 0.

4)test (проверить) выполняет логическое побитовое умножение своих двух операндов (байтов или слов), но в отличие от and результат никуда не записывается, а лишь используется для установки флажков. Оба операнда остаются без изменения. Например, оператор:

test                     bl, 11110000b

установит флаг нуля в 1 только тогда, когда ни один из четырех старших битов в BL не равен 1.

5)not (НЕ)  инвертирует все биты в операнде: вместо 0 пишет 1, а вместо  1– 0.

 


Предыдущий раздел В начало Следующий раздел