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

Команды логических операций обеспечивают логические операции над соответствующими (имеющими одинаковый номер) битами однобайтных операндов. Влияния битов друг на друга типа переноса или заёма, имевшие место при арифметических операциях, в логических операциях отсутствуют. Поэтому, за счёт влияния логических команд на все биты признаков, биты CY и AC после этих команд всегда будут сброшены в 0.

Основные логические команды обеспечивают логические операции & – “И” (конъюнкция), Ú – “ИЛИ” (дизъюнкция), Å – “исключающее ИЛИ” (сложение по модулю два) в соответствии с правилами логики (Табл.10). Эти команды выполняются по общей схеме арифметическо-логических команд: первый операнд и результат операции всегда хранятся в аккумуляторе, а второй операнд может быть выбран модификациями команд: либо в любом из регистров процессора; либо в ячейке памяти M, хранящей адрес в HL; либо непосредственно в составе самой команды.

Таблица 1.10.

Результаты логических операций

Исходные числа & Ú Å

Команда CMA обеспечивает логическую операцию “НЕ” над операндом из аккумулятора. Выполняется инвертирование всех битов и результат остаётся в аккумуляторе. Если например, до выполнения команды в аккумуляторе было число 10110101, то после команды CMA там будет число 01001010.

Команды типа ANA r, ORA r, XRA r обеспечивают операции “И”, “ИЛИ”, “исключающее ИЛИ” соответственно, притом, что второй операнд адресуется регистровым способом через выбор регистра r из регистров A, B, C, D, E, H, L.

Команды типа ANA M, ORA M, XRA M обеспечивают операции “И”, “ИЛИ”, “исключающее ИЛИ” соответственно, притом, что второй операнд адресуется косвенно-регистровым способом через адрес подготовленный предварительно в регистровой паре HL.

Команды типа ANI d8, ORI d8, XRI d8 обеспечивают операции “И”, “ИЛИ”, “исключающее ИЛИ” соответственно, притом, что второй операнд адресуется прямым способом то есть является вторым байтом d8 в составе самой команды.

Команды операций “И” используется когда требуется, например, оценить состояние какого-то одного из битов в составе байта.

Пример1.42

Требуется оценить значение бита D4 в составе байта из регистра B.

Адрес Число Мнемокод Комментарий

0800 78 MOV A,B ; поместить в A исследуемый байт

0801 E6 10 ANI 10h ; выполнить операцию (A)(A)&00010000b

если бит Z в регистре признаков покажет наличие нулевого результата, то значит исследуемый бит равен нулю, иначе он равен единице.

Команда операции “И” может также быть применена для сброса в ноль какого-то одного или нескольких битов в составе байта.

Пример1.43

Требуется сбросить в ноль бит D6 в составе байта из регистра B..

Адрес Число Мнемокод Комментарий

0800 78 MOV A,B ; поместить в A исследуемый байт

0801 E6 BF ANI BFh ; выполнить операцию (A)(A)&10111111b

Команды операций “ИЛИ” уместно применить в случае необходимости установить в единицу один из битов в составе байта.

Пример1.44

Требуется установить в единицу бит D2 в составе байта из регистра B.

Адрес Число Мнемокод Комментарий

0800 78 MOV A,B ; поместить в A исследуемый байт

0801 F6 02 ORI 02h ; выполнить операцию (A)(A)Ú00000010b

Команда XRA A эффективна для очистки аккумулятора, так как занимает в памяти только один байт и выполняется всего за 4 такта.