3.1.3. Состав команд логических операций

Логические команды составляют еще одну группу команд микропроцессора. Они сведены в табл. 3.5. И содержат команды И, ИЛИ, ИЛИ ИСКЛЮЧАЮЩЕЕ, НЕ (инверсия) и сдвига.

Здесь именно аккумулятор составляет ядро большинства операций. Как и при арифметических командах, способ адресации и здесь влияет на способ и место нахождения других данных в системе.

Таблица 3.5 Команды логических операций

Операция

Адресация

Мнемоника

КОП

Бай-ты

Формат команды

Символика

Индикаторы

А И данные

А И L

А И LOC

А ИЛИ

данные

А ИЛИ H

А ИЛИ ИСКЛЮ-ЧАЮЩЕЕ A

Инвертиро-вать A

непосредственная

регистровая

косвенная

регистр.

непосредственная

регистровая

регистровая

неявная

ANI

ANA L

ANA M

ORI

ORA H

XRA A

CMA

E6

A5

A6

F6

B4

AF

2F

2

1

1

2

1

1

1

КОП,

данные

КОП

КОП

КОП,

данные

КОП 

КОП

КОП

(A)  

(A)*(bite 2)

(A) (A)*(L)

(A)   (A)*((H)(L))

(A)   (A)+(bite2)

(A)     (A)+(H)

 

(A)  (A)+(A)

(A)      (Ā)

Все

Все

Все

Все

Все

Все

Все

Рассмотрим выполнение микропроцессором команды И непосредственно (рис. 3.8, а). Содержимое аккумулятора (0001 0011) подвержено операции И побитно. Согласно таблице истинности, для операции И только самые младшие биты каждого числа равны 1, следовательно, результатом будет 0000 0001, он помещен в аккумулятор.

Рис. 3.7.  Команда И с непосредственной адресацией (а)

и команда ANA M (б)

Согласно последней колонке табл. 3.5, результатом всех операций И будет сброс индикатора переноса, мы это видим также на рис. 3.8, а. Результат операции И проверяется с целью определения – не нуль ли он, и если нет, то индикатор нуля сбрасывается в 0.

Отметим использование знака умножения (*) в таблице в колонке символов для обозначения операции И.

На рис. 3.8, б приведен другой пример использования команды И, в этом случае – И косвенной адресации (мнемоника ANA M). Содержимое аккумулятора подвержено операции И (бит с битом) с содержимым ячейки памяти, указанной парой HL. После операции 0011 1100 И логическое с 0000 0
001 полученный результат 0000 0000 помещен в аккумулятор. Индикатор переноса сбрасывается (СБРОС) согласно табл. 3.5. Помещенный в аккумулятор результат проверяется, и, поскольку он равен 0, индикатор нуля устанавливается в 1.

Внимательно рассмотрим рис. 3.8. В этих двух примерах второй операнд – 0000 0001. Он используется как маска. Маска 0000 0001 на рис. 3.8, а и б может быть использована для сброса в 0 семи старших бит или, с учетом наличия индикатора нуля, для тестирования значений 0 или 1 в позиции младшего бита аккумулятора (в этом случае на единственную 1 надевается маска 0000 0001). Но нужно быть осторожным. Заметим, что содержимое аккумулятора изменилось после операции И. Некоторые микропроцессоры снабжены специальными командами тестирования битов, которые выполняют операции И с содержимым аккумулятора и с маской байта без изменения содержимого всего аккумулятора, изменяя состояние индикаторов.