Команди порозрядної обробки інформації

Команди порозрядної обробки інформації відрізняються від команд арифметичних операцій тим, що працюють з окремими бітами незалежно від умісту байта в цілому. Такі команди є для байтового і бітового формату даних. Їх також називають логічними командами, тому що з їх допомогою можна обчислювати функції алгебри логіки НІ, І, АБО і ВИКЛЮЧНЕ АБО. Наведемо для довідки таблицю значень цих функцій:

X У /X X.AND.Y X.OR.Y X.XOR.Y

0 0 1 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 flag

Крім того, інверсія біта може бути використана в командах І та АБО, як показано далі.

Команди для обчислення функції І в байтовому форматі використовують різноманітні способи адресації. Очевидно, мнемоніка команди розшифровується як ANd Logical.

ANL A, #src

ANL A, Rn

ANL A, @Ri

ANL A, src

ANL dst, A

ANL dst, #src

Ці команди можуть використовуватися, наприклад, для очищення окремих бітів двійкового коду, або для перевірки наявності 1 у деякому наборі бітів. Маються дві команди, що обчислюють функцію І в бітовому форматі:

ANL С, flag

ANL С, /flag

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

Аналогічний набір команд мається і для функції АБО в байтовому форматі з мнемонікою OR Logical:

ORL A, #src

ORL A, Rn

ORL A, @Ri

ORL A, src

ORL dst, A

ORL dst, #src

Ці команди можуть використовуватися, наприклад, для установки окремих бітів двійкового коду в 1. Маються дві аналогічні команди, що обчислюють функцію в бітовому форматі:

ORL С, flag

ORL С, /flag

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

Для функції ВИКЛЮЧНЕ АБО аналогічні команди існують тільки в байтовому форматі. Напевно, що відповідна команда розшифровується як exclusive o Logical:

XRL A, #src

XRL A, Rn

XRL A, src

XRL A, @Ri

XRL dst, A

XRL dst, #src

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

До команд порозрядної обробки інформації можна віднести команди циклічного зрушення вліво і вправо, що працюють з 8-ми бітами (нагромаджувач) чи з 9-ма бітами (нагромаджувач + біт переносу):

RL А

RR А

RLC А

RRC А

Перша літера в мнемокодах цих команд означає Rotate (повертати), друга вказує на напрямок (Left чи Right), а третя — на участь біта переносу. При зсуві вліво в усі біти нагромаджувача, крім самого молодшого записується старий уміст сусіднього правого біта. При зсуві вправо в усі біти нагромаджувача, крім самого старшого, записується старий уміст сусіднього лівого біта. Якщо біт переносу не бере участь в операції циклічного зрушення, то при зсуві вліво в самий молодший байт записується старий уміст самого старшого біта, а при зсуві вправо в самий старший байт записується старий уміст самого молодшого біта. При участі біта переносу його уміст включається в ланцюжок циклічного переносу, що дозволяє здійснювати зсув вмісту багатобайтових кодів. До операції циклічного зсуву на 4 розряди без участі біта переносу можна віднести команду

SWAR A

Вона здійснює обмін напівбайтів умісту нагромаджувача, так що її можна інтерпретувати як зсув молодшого напівбайта на 4 розряди вліво і зсув старшого напівбайта на 4 розряди вправо.

Якщо перед виконанням команди зсуву очистити біт переносу, то зрушення за участю цього біта може використовуватися в якості команди арифметичної операції. Зсув вправо відповідає розподілу позитивного числа на 2, притім у біт переносу записується залишок від розподілу. Зсув уліво відповідає множенню позитивного числа на 2, притім 1 у біті переносу сигналізує про переповнення.

Група команд логічних операцій наведена в табл. 8.2.

Таблиця 8.2

Група команд логічних операцій

Назва команди Мнемокод КОП Т Б Ц Операція
Логічне І акумулятора та Рг ANL A,Rn 01011rrr (A)¬(A)Ù(Rn)
Логічне І акумулятора та байта, що адресується прямо ANL A,ad (A)¬(A)Ù(ad)
Логічне І акумулятора та байта із РПД ANL A,@Ri 0101011i (A)¬(A)Ù((Ri))
Логічне І акумулятора та константи ANL A,#d (A)¬(A)Ù#d
Логічне І байта, що адресується прямо, та акумулятора ANL ad,A (ad)¬(ad)Ù(A)
Логічне І байта, що адресується прямо, та константи ANL ad,#d (ad)¬(ad)Ù#d
Логічне АБО акумулятора та регістра ORL A,Rn 01001rrr (A)¬(A)Ú(Rn)
Логічне АБО акумулятора та байта, що адресується прямо ORL A,ad (A)¬(A)Ú (ad)
Закінчення табл. 8.2
Назва команди Мнемокод КОП Т Б Ц Операція
Логічне АБО акумулятора та байта із РПД ORL A,@Ri 0100011i (A)¬(A)Ú((Ri))
Логічне АБО акумулятора та константи ORL A,#d (A)¬(A)Ú #d
Логічне АБО байта, що адресується прямо, та акумулятора ORL ad,A (ad)¬(ad)Ú (A)
Логічне АБО байта, що адресується прямо, та константи ORL ad,#d (ad)¬(ad)Ú #d
Виключне АБО акумулятора та регістра XRL A,Rn 01101rrr (A)¬(A)"(Rn)
Виключне АБО акумулятора та байта, що адресується прямо XRL A,ad (A)¬(A)" (ad)
Виключне АБО акумулятора та байта із РПД XRL A,@Ri 0110011i (A)¬(A)"((Ri))
Виключне АБО акумулятора та константи XRL A,#d (A)¬(A)" #d  
Виключне АБО байта, що адресується прямо, та акумулятора XRL ad,A (ad)¬(ad)"(A)
Виключне АБО акумулятора та константи XRL ad,#d (ad)¬(ad)" #d
Скидання акумулятора CLR A (A)¬0
Інвертування акумулятора CPL A (A)¬інв(А)
Зсув акумулятора ліворуч циклічно RL A (An+1)¬(An), n=0¸6, (A0)¬(A7)
Зсув акумулятора ліворуч циклічно через перенос RLC A (An+1)¬(An), n=0¸6, (A0)¬(C), (C)¬(A7)
Зсув акумулятора праворуч циклічно RR A (An)¬(An+1), n=0¸6, (A7)¬(A0)
Зсув акумулятора праворуч циклічно через перенос RRC A (An)¬(An+1), n=0¸6, (A7)¬(C), (C)¬(A0)
Обмін місцями тетрад в акумуляторі SWAP A (A0-3)«(A4-7)

 

Група команд операцій з бітами наведена в табл. 8.3.

Таблиця 8.3

Група команд операцій з бітами

Назва команди Мнемокод КОП Т Б Ц Операція
Скидання переносу CLR C (C)¬0
Скид біта CLR bit (b) ¬0
Встановлення переносу SETB C (C)¬1
Встановлення біта SETB bit (b) ¬1
Інверсія переносу CPL C (C)¬( інвС)
Інверсія біта CPL bit (b) ¬ (інвb)
Закінчення табл.8.3
Назва команди Мнемокод КОП Т Б Ц Операція
Логічне І біта і переносу ANL C,bit (C)¬(C) Ù (b)
Логічне І інверсії біта і переносу ANL C,/bit (C)¬(C) Ù (інвb)
Логічне АБО біта і переносу ORL C,bit (C)¬(C) Ú (b)
Логічне АБО інверсії біта і переносу ORL C,/bit (C)¬(C) Ú (інвb)
Пересилання біта в перенос MOV C,bit (C)¬(b)
Пересилання переносу в біт MOV bit,C (b) ¬(C)