Команды поразрядной обработки информации отличаются от команд арифметических операции тем, что работают с отдельными битами независимо от содержимого байта в целом. Такие команды есть для байтового и битового формата данных» Их также называют логическими командами, потому что с их помощью можно вычислять функции алгебры логики НЕ, И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ. Приведем для справки таблицу значений этих функций:
X | Y | X. AND. Y | X.OR.Y | X.XOR.Y | |
Все команды поразрядной обработки информации не влияют на содержимое слова состояния программы, за исключением случаев непосредственной записи результата в этот регистр или его биты.
Для получения обратного кода (логическая функция НЕ) при байтовом формате данных предназначена команда
CPL A
Мнемоника этой команда C om PL emeni означает «дополнение», хотя в результате ее выполнения получается не дополнительный, а обратный код. Имеются две команды аналогичного назначения, работающие с отдельными битами:
CPL С
CPL flag
Кроме того, инверсия бита может быть использована в командах И и ИЛИ, как показано далее.
Команды для вычисления функции И в байтовом формате используют разнообразные способы адресации. По-видимому, мнемоника команды расшифровывается как
AN d L ogical.
ANL A, #src
ANL A, Rn
ANL A, @Ri
ANL А, src
ANL dst, A
ANL dst, #src
Эти команды могут использоваться, например, для очистки отдельных битов двоичного кода или для проверки наличия “1” в некотором наборе битов. Имеются две команды, вычисляющие функцию И в битовом формате:
ANL С, flag
ANL С, /flag
Символ косой черты во второй команде означает, что для вычисления логической функции используется инвертированное значение бита.
Аналогичный набор команд имеется и для функции ИЛИ в байтовом формате с мнемоникой OR L ogical:
ORL A, src
ORL A, Rn
ORL A, @Ri
ORL А, src
ORL dst, A
ORL dst, #src
Эти команды могут использоваться, например, для установки отдельных битов двоичного кода в “1”, Имеются две аналогичные команды, вычисляющие функцию ИЛИ в битовом формате:
ORL С, flag
ORL С, /flag
Символ косой черты во второй команде означает, что для вычисления логической функции используется инвертированное значение бита.
Для функции ИСКЛЮЧАЮЩЕЕ ИЛИ аналогичные команды существуют только в байтовом формате. Наверно, соответствующая команда расшифровывается как
e X clusive o R L ogical:
XRL A, #src
XRL А, Rn
XRL A, src
XRL A, @Ri
XRL dstt A
XRL dst, #src
Эти команды могут использоваться, например, для изменения значения отдельных битов двоичного кода на обратное (toggle). Они могут также использоваться для проверки кодов на совпадение.
К командам поразрядной обработки информации можно отнести команды циклического сдвига влево и вправо, работающие с 8 битами (накопитель) или с 9 битами (накопитель + бит переноса):
RL А
RR А
RLC А
RRC А
Первая буква в мнемокодах этих команд означает R otate (поворачивать),
вторая указывает на направление (L eft или R ight), а третья — на участие бита переноса. При сдвиге влево во все биты накопителя кроме самого младшего записывается старое содержимое соседнего правого бита. При сдвиге вправо во все биты накопителя кроме самого старшего записывается старое содержимое соседнего левого бита. Если бит переноса не участвует в операции циклического сдвига, то при сдвиге влево в самый младший байт записывается старое содержимое самого старшего бита, а при сдвиге вправо в самый старший байт записывается старое содержимое самого младшего бита. При участии бита переноса его содержимое включается в цепочку циклического переноса, что позволяет осуществлять сдвиги содержимого многобайтовых кодов. К операции циклического сдвига на 4 разряда без участия бита переноса можно отнести команду
swap А
Она осуществляет обмен полубайтов содержимого накопителя, так что ее можно интерпретировать как сдвиг младшего полубайта на 4 разряда влево и сдвиг старшего полубайта на 4 разряда вправо.
Если перед выполнением команды сдвига очистить бит переноса, то сдвиг с участием этого бита может использоваться в качестве команды арифметической операции. Сдвиг вправо соответствует делению положительного числа на 2, притом в бит переноса записывается остаток от деления. Сдвиг влево соответствует умножению положительного числа на 2, притом «1» в бите переноса сигнализирует о переполнении.