- •Введение
- •Устройство и принцип работы микропроцессорного контроллера
- •Основные понятия и определения
- •Форматы данных
- •Команда
- •Код операции
- •Способы указания адреса
- •Система команд
- •3.1. Обозначения в описаниях команд
- •3.2. Команды перемещения данных
- •Команды арифметических операций
- •Команды логических операций
- •Команды операций над битами
- •Команды передачи управления
- •Работа над заданием
- •Как работать с учебным микроконтроллером ук52–эм02
- •Общие требования и рекомендации к выполнению практики и оформлению отчета
Команды логических операций
В группе 25 команд, их краткое описание приведено в табл. 6. Данные команды позволяют выполнить операции над операндами: логическое И (/\ ), логическое ИЛИ ( \/), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг.
Таблица 6.
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция |
Логическое И аккумулятора и регистра |
ANL A, Rn |
58 – 5F |
1 |
1 |
1 |
(A) (A) AND (Rn) |
Логическое И аккумулятора и прямоадресуемого байта |
ANL A, ad |
55 |
3 |
2 |
1 |
(A) (A) AND (ad) |
Логическое И аккумулятора и байта из РПД |
ANL A, @Ri |
56 – 57 |
1 |
1 |
1 |
(A) (A) AND ((Ri)) |
Логическое И аккумулятора и константы |
ANL A, #d |
54 |
2 |
2 |
1 |
(A) (A) AND #d |
Логическое И прямоадресуемого байта и аккумулятора |
ANL ad, A |
52 |
3 |
2 |
1 |
(ad) (ad) AND (A) |
Логическое И прямо-адресуемого байта и константы |
ANL ad, #d |
53 |
7 |
3 |
2 |
(ad) (ad) AND #d |
Логическое ИЛИ аккумулятора и регистра |
ORL A, Rn |
48 – 4F |
1 |
1 |
1 |
(A) (A) OR (Rn) |
Логическое ИЛИ аккумулятора и прямо-адресуемого байта |
ORL A, ad |
45 |
3 |
2 |
1 |
(A) (A) OR (ad) |
Логическое ИЛИ аккумулятора и байта из РПД |
ORL A, @Ri |
46 – 47 |
1 |
1 |
1 |
(A) (A) OR ((Ri)) |
Логическое ИЛИ аккумулятора и константы |
ORL A, #d |
44 |
2 |
2 |
1 |
(A) (A) OR #d |
Логическое ИЛИ прямоадресу- емого байта и аккумулятора |
ORL ad, A |
42 |
3 |
2 |
1 |
(ad) (ad) OR (A) |
Логическое ИЛИ прямо-адресуемого байта и константы |
ORL ad, #d |
43 |
7 |
3 |
2 |
(ad) (ad) OR #d |
Исключающее ИЛИ аккумулятора и регистра |
XRL A, Rn |
68 – 6F |
1 |
1 |
1 |
(A) (A) XOR (Rn) |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта |
XRL A, ad |
65 |
3 |
2 |
1 |
(A) (A) XOR (ad) |
Исключающее ИЛИ аккумулятора и байта из РПД |
XRL A, @Ri |
66 – 67 |
1 |
1 |
1 |
(A) (A) XOR ((Ri)) |
Исключающее ИЛИ аккумулятора и константы |
XRL A, #d |
64 |
2 |
2 |
1 |
(A) (A) XOR #d |
Исключающее ИЛИ прямо-адресуемого байта и аккумулятора |
XRL ad, A |
62 |
3 |
2 |
1 |
(ad) (ad) XOR (A) |
Исключающее ИЛИ прямо-адресуемого байта и константы |
XRL ad, #d |
63 |
7 |
3 |
2 |
(ad) (ad) XOR #d |
Сброс аккумулятора |
CLR A |
E4 |
1 |
1 |
1 |
(A) 0 |
Инверсия аккумулятора |
CPL A |
F4 |
1 |
1 |
1 |
(A) NOT(A) |
Сдвиг аккумулятора влево циклический |
RL A |
23 |
1 |
1 |
1 |
(An+1) (An), n=0÷6, (A0) (A7)
|
Сдвиг аккумулятора влево через перенос |
RLC A |
33 |
1 |
1 |
1 |
(An+1) (An), n=0÷6 (A0) (C), (C) (A7) |
Сдвиг аккумулятора вправо циклический |
RR A |
03 |
1 |
1 |
1 |
(An) (An+1), n=0÷6, (A7) (A0) |
Сдвиг аккумулятора вправо через перенос |
RRC A |
13 |
1 |
1 |
1 |
(An) (An+1), n=0÷6 (A7) (C), (C) (A0) |
Обмен местами тетрад в аккумуляторе |
SWAP A |
C4 |
1 |
1 |
1 |
(A0…3) ↔ (A4…7) |
Команда ANL (AND Logic – логическое И ) выполняет операцию логического умножения двух операндов, один из которых находится в аккумуляторе, второй представлен различными вариантами адресации.
Команда ORL (OR Logic – логическое ИЛИ) выполняет операцию логического сложения двух операндов, один из которых находится в аккумуляторе, второй представлен различными вариантами адресации.
Команда XRL (Еxclusive OR Logic – исключительное ИЛИ) выполняет операцию логического сложения по модулю два (исключающее ИЛИ) двух операндов, один из которых находится в аккумуляторе, второй представлен различными вариантами адресации.
Операции ANL, ORL, XRL выполняются побитно, т.е. над двумя битами с одинаковыми индексами двух операндов, например:
Результат этих операций остается в аккумуляторе либо по прямому адресу первого операнда.
Команда RR (Rotate to Right - сдвиг вправо) - осуществляет сдвиг содержимого аккумулятора на один разряд вправо, при этом сдвигаемый младший бит D0 занимает место старшего бита D7 (рис.6,а).
Команда RL (Rotate to Left - сдвиг влево) - осуществляет сдвиг содержимого аккумулятора на один разряд влево, при этом сдвигаемый старший бит D7 занимает место младшего бита D0 (рис.6,б).
Рис.6. Сдвиг содержимого аккумулятора вправо (а) и влево (б)
Команда RRC (Rotate to Right through Carry – сдвиг вправо через перенос) - осуществляет сдвиг содержимого аккумулятора на один разряд вправо через перенос, при этом сдвигаемый младший бит D0 занимает место бита переноса СY, а бит переноса СY занимает место старшего бита D7 (рис.7,а).
Команда RLC (Rotate to Left through Carry – сдвиг влево через перенос) - осуществляет сдвиг содержимого аккумулятора на один разряд влево через перенос, при этом сдвигаемый старший бит D7 занимает место бита переноса СY, а бит переноса СY занимает место младшего бита D0 (рис.7,б).
Рис.7. Сдвиг содержимого аккумулятора через перенос
вправо (а) и влево (б)
Команда CLR (Clearing - очистка) – очистка аккумулятора (сброс битов аккумулятора в ноль).
Команда CPL (Complement - дополнение) - выполняет инверсию битов аккумулятора (дополнение к предыдущему значению).
Команда SWAP (SWAP - обменивать) - меняет местами старшую и младшую тетрады байта в аккумуляторе, эта команда может интерпретироваться как циклический сдвиг байта на четыре разряда.