Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к цифрам.doc
Скачиваний:
23
Добавлен:
06.05.2019
Размер:
2.08 Mб
Скачать

3.7. Группа логических команд

Команды поразрядной обработки информации отличаются от команд арифметических операций тем, что работают с отдельными битами независимо от содержимого байта в целом. Такие команды есть для байтового и битового формата данных. Их также называют логическими командами, потому что с их помощью можно вычислять функции алгебры логики НЕ, И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ. Приведем для справки таблицу значений этих функций:

Табл. 6.

X

Y

X.AND.Y

X.OR.Y

X.XOR.Y

0

0

l

0

0

0

0

1

1

0

1

1

1

0

0

0

1

1

1

1

0

1

1

0

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

Для получения обратного кода (логическая функция НЕ) при байто­вом формате данных предназначена команда:

CPL А

Мнемоника этой команды ComPLement означает «дополнение», хотя в результате ее выполнения получается не дополнительный, а обратный код. Имеются две команды аналогичного назначения, работающие с отдельными битами, например:

CPL С

CPL Rn.j

Здесь Rn.j обозначает j , бит регистра Rn

Кроме того, инверсия бита может быть использована в командах И и ИЛИ, как показано далее.

Команды для вычисления функции И в байтовом формате используют разнообразные способы адресации. По-видимому, мнемоника команды расшифровывается как ANd Logical:

ANL А,#dat8

ANL А,Rn

ANL А,@Ri

ANL А,dat8

ANL dat8,A

ANL 1dat8,#2dat8

Эти команды могут использоваться, например, для очистки отдельных битов двоичного кода или для проверки наличия 1 в некотором наборе битов. Имеются две команды, вычисляющие функцию И в битовом формате:

ANL C,Rn.j

ANL С,/Rn.j

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

Аналогичный набор команд имеется и для функции ИЛИ в байтовом формате с мнемоникой ORLogical:

ORL A, # dat8

ORL А, Rn

ORL A, @Ri

ORL А, dat8

ORL dat8, A

ORL 1dat8,#2dat8

Эти команды могут использоваться, например, для установки отдельных битов двоичного кода в “1”. Имеются две аналогичные команды, вычис­ляющие функцию ИЛИ в битовом формате:

ORL С,Rn.j

ORL С,/Rn.j

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

Для функции ИСКЛЮЧАЮЩЕЕ ИЛИ аналогичные команды суще­ствуют только в байтовом формате. Наверное соответствующая команда расшифровывается как exclusive oR Logical:

XRL A,#dat8

XRL A, Rn

XRL A,dat8

XRL A,@Ri

XRL dat8,A

XRL 1dat8,#2dat8

Эти команды могут использоваться, например, для изменения значения отдельных битов двоичного кода на обратное (toggle). Они могут также использоваться для проверки кодов на совпадение.

К командам поразрядной обработки информации можно отнести команды циклического сдвига влево и вправо, работающие с 8 битами (аккумулятор) или с 9 битами (аккумулятор + бит переноса):

RL A

RR А

RRC А

Первая буква в мнемокодах этих команд означает Rotate (поворачивать), вторая указывает па направление (Left или Right), а третья - на участие бита

переноса. При сдвиге влево во все биты накопителя кроме самого младшего записывается старое содержимое соседнего правого бита. При сдвиге вправо во все биты накопителя кроме самого старшего запи­сывается старое содержимое соседнего левого бита. Если бит переноса не участвует в операции циклического сдвига, то при сдвиге влево в самый младший байт записывается старое содержимое самого старшего бита, а при сдвиге вправо в самый старший байт записывается старое содержи­мое самого младшего бита. При участии бита переноса его содержимое включается в цепочку циклического переноса, что позволяет осуществ­лять сдвиги содержимого многобайтовых кодов. К операции циклическо­го сдвига на 4 разряда без участия бита переноса можно отнести команду:

SWAP A

Она осуществляет обмен полубайтов содержимого накопителя, так что ее можно интерпретировать как сдвиг младшего полубайта, на 4 разрада влево и. сдвиг старшего полубайта на 4 разрада вправо.

Если перед выполнением команды сдвига очистить бит переноса, то сдвиг с участием этого бита, может использоваться в качестве команды арифметической операции. Сдвиг вправо соответствует делению положительного числа на 2, притом в бит переноса записывается остаток от деления. Сдвиг влево соответствует умножению положительного числа на 2, притом “1” в бите переноса сигнализирует о переполнении.