Логические команды составляют еще одну группу команд микропроцессора. Они сведены в табл. 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). Но нужно быть осторожным. Заметим, что содержимое аккумулятора изменилось после операции И. Некоторые микропроцессоры снабжены специальными командами тестирования битов, которые выполняют операции И с содержимым аккумулятора и с маской байта без изменения содержимого всего аккумулятора, изменяя состояние индикаторов.