Команды поразрядной обработки информации

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

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» в бите переноса сигнализирует о переполнении.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: