- •Введение
- •Устройство и принцип работы микропроцессорного контроллера
- •Основные понятия и определения
- •Форматы данных
- •Команда
- •Код операции
- •Способы указания адреса
- •Система команд
- •3.1. Обозначения в описаниях команд
- •3.2. Команды перемещения данных
- •Команды арифметических операций
- •Команды логических операций
- •Команды операций над битами
- •Команды передачи управления
- •Работа над заданием
- •Как работать с учебным микроконтроллером ук52–эм02
- •Общие требования и рекомендации к выполнению практики и оформлению отчета
Команды арифметических операций
В данную группу входят 24 команды, краткое описание которых приведено в табл. 5. Из нее следует, что микро-ЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.
Таблица 5
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция |
Сложение аккумулятора с регистром (n=0÷7) |
ADD A, Rn |
28 – 2F |
1 |
1 |
1 |
(A) (A) + (Rn) |
Сложение аккумулятора с прямо- адресуемым байтом |
ADD A, ad |
25 |
3 |
2 |
1 |
(A) (A) + (ad) |
Сложение аккумулятора с байтом из РПД (i = 0,1) |
ADD A, @Ri |
26 –27 |
1 |
1 |
1 |
(A) (A) + ((Ri)) |
Сложение аккумулятора с константой |
ADD A, #d |
24 |
2 |
2 |
1 |
(A) (A) + #d |
Сложение аккумулятора с регистром и переносом |
ADDC A, Rn |
38 – 3F |
1 |
1 |
1 |
(A) (A) + (Rn) + (C) |
Сложение аккумулятора с прямо-адресуемым байтом и переносом |
ADDC A, ad |
35 |
3 |
2 |
1 |
(A) (A) + (ad) + (C) |
Сложение аккумулятора с байтом из РПД и переносом |
ADDC A, @Ri |
36 – 37 |
1 |
1 |
1 |
(A) (A) + ((Ri)) + (C) |
Сложение аккумулятора с константой и переносом |
ADDC A, #d |
34 |
2 |
2 |
1 |
(A) (A) + # d + (C) |
Вычитание из аккумулятора регистра и займа |
SUBB A, Rn |
98 – 9F |
1 |
1 |
1 |
(A) (A) - (C) - (Rn) |
Вычитание из аккумулятора прямо-адресуемого байта и займа |
SUBB A, ad |
95 |
3 |
2 |
1 |
(A) (A) - (C) - ((ad)) |
Вычитание из аккумулятора байта РПД и займа |
SUBB А, @Ri |
96 –97 |
1 |
1 |
1 |
(A) (A) - (C) - ((Ri)) |
Вычитание из аккумулятора константы и займа |
SUBB А,#d |
94 |
2 |
2 |
1 |
(A) (A) - (C) - #d |
Инкремент аккумулятора |
INC А |
04 |
1 |
1 |
1 |
(A) (A) + 1 |
Инкремент регистра |
INC Rn |
08 – 0F |
1 |
1 |
1 |
(Rn) (Rn) + 1 |
Инкремент прямоадресуемого байта |
INC ad |
05 |
3 |
2 |
1 |
(ad) (ad) + 1 |
Инкремент байта в РПД |
INC @Ri |
06- 07 |
1 |
1 |
1 |
((Ri)) ((Ri)) + 1 |
Инкремент указателя данных |
INC DPTR |
A3 |
1 |
1 |
2 |
(DPTR ) (DPTR) + 1 |
Декремент аккумулятора |
DEC A |
14 |
1 |
1 |
1 |
(A) (A) – 1 |
Декремент регистра |
DEC Rn |
18 – 1F |
1 |
1 |
1 |
(Rn) (Rn) – 1 |
Декремент прямоадресуемого байта |
DEC ad |
15 |
3 |
2 |
1 |
(ad) (ad) – 1 |
Декремент байта в РПД |
DEC @Ri |
16 – 17 |
1 |
1 |
1 |
((Ri)) ((Ri)) - 1 |
Умножение аккумулятора на регистр В |
MUL AB |
A4 |
1 |
1 |
4 |
(B)(A) (A)×(В) |
Деление аккумулятора на регистр В |
DIV AB |
84 |
1 |
1 |
4 |
(B).(A) (A)/(В) |
Десятичная коррекция аккумулятора |
DA A |
D4 |
1 |
1 |
1 |
Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7)+ 6 |
Команда ADD (Addition - добавление) выполняет сложение двух операндов (один из операндов находится в аккумуляторе, а второй адресуется разными способами) без учета бита переноса С в предыдущей операции, команда ADDC (Addition with Carry) – с учетом бита переноса С.
Команда SUBB (Substraction with Borrow – вычитание c займом) осуществляет вычитание из операнда в аккумуляторе второго операнда с разными способами адресации, с учетом займа.
Результат операций сложения и вычитания остается в аккумуляторе.
Команда INC (Increment – увеличение на единицу) осуществляет операцию инкремента операнда, представленного различными вариантами адресации.
Команда DEC (Decrement – уменьшение на единицу) осуществляет операцию декремента операнда, представленного различными вариантами адресации.
Операции INC и DEC применимы к аккумулятору, прямоадресуемому регистру, прямо- или косвенно адресуемой ячейке памяти. Кроме того, операция INC применима к содержимому 16- разрядного регистра указателя DPTR.
Команда MUL (Multiply - умножение) осуществляет операцию умножения двух операндов, один из которых находится в аккумуляторе А, а второй - в регистре В. Результат перемножения представляет двухбайтовый операнд, старший байт которого находится в регистре В, младший – в регистре А: (B)(A) (A)×(В).
Команда DIV (Divide - деление) осуществляет операцию умножения двух операндов, один из которых находится в аккумуляторе А, а второй в регистре В. Результат перемножения представляет двухбайтовый операнд, старший байт которого находится в регистре А, младший – в регистре В: (B)(A) (A)/(В).
Команда DA (Decimal correction of the Accumulator) – десятичная коррекция аккумулятора осуществляет десятичную коррекцию операнда в аккумуляторе, при преобразовании двоичных данных в двоично-десятичные.