- •Введение
- •Устройство и принцип работы микропроцессорного контроллера
- •Основные понятия и определения
- •Форматы данных
- •Команда
- •Код операции
- •Способы указания адреса
- •Система команд
- •3.1. Обозначения в описаниях команд
- •3.2. Команды перемещения данных
- •Команды арифметических операций
- •Команды логических операций
- •Команды операций над битами
- •Команды передачи управления
- •Работа над заданием
- •Как работать с учебным микроконтроллером ук52–эм02
- •Общие требования и рекомендации к выполнению практики и оформлению отчета
3.1. Обозначения в описаниях команд
Для описания операндов или их адресов в поле операнда команды записываются ниже приведенные обозначения в зависимости от способа адресации:
Rn (n = 0, 1,..., 7) – регистр общего назначения;
@Ri (i= 0, 1) – регистр общего назначения, используемый в качестве
регистра косвенного адреса;
ad – адрес прямоадресуемого байта;
ads – адрес прямоадресуемого байта-источника;
add – адрес прямоадресуемого байта-получателя;
ad11 – 11-разрядный абсолютный адрес перехода;
ad16 – 16-разрядный абсолютный адрес перехода;
rel – относительный адрес перехода;
#d – непосредственный операнд;
#d16 – непосредственный операнд (2 байта);
bit – адрес прямо адресуемого бита;
/bit – инверсия прямоадресуемого бита;
А - аккумулятор;
РС – счетчик команд;
DPTR – регистр - указатель данных;
( ) – содержимое ячейки памяти или регистра.
3.2. Команды перемещения данных
Эта группа представлена 28 командами, их краткое описание приведено в табл. 4, где также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Основная команда группы MOV (Move – перемещение) осуществляет пересылку данных в пределах адресного пространства РПД и РСФ, с различными способами адресации, и команды MOVX (чтение/запись байта из внешней памяти данных) и MOVC (чтение байт из памяти программ). На рис.5 показаны варианты пересылки данных между различными сегментами адресного пространства МК51 с учетом всех способов адресации, которые отражены в табл. 4.
Рис. 5. Граф перемещения данных в пределах адресного пространства МК51
Как видно, центральное место занимает аккумулятор А, на который замыкается большинство пересылок данных, хотя некоторые из пересылок осуществляются и без участия аккумулятора. Большинство пересылок двухсторонние, т.е. в поле операнда можно менять местами операнд приемник и операнд источник данных. Исключение составляют пересылка непосредственного операнда и чтение данных из памяти программ.
Таблица 4
Название команды |
Мнемокод |
КОП |
Т |
Б |
Ц |
Операция |
Пересылка в аккумулятор из регистра (n=0÷7) |
MOV A, Rn |
E8 - EF |
1 |
1 |
1 |
(A) (Rn) |
Пересылка в аккумулятор прямо-адресуемого байта |
MOV A, ad |
E5 |
3 |
2 |
1 |
(A) (ad) |
Пересылка в аккумулятор байта из РПД (i=0,1) |
MOV A, @Ri |
E6 - E7 |
1 |
1 |
1 |
(A) ((Ri)) |
Загрузка в аккумулятор константы |
MOV A, #d |
74 |
2 |
2 |
1 |
(A) #d |
Пересылка в регистр из аккумулятора |
MOV Rn, A |
F8 – FF |
1 |
1 |
1 |
(Rn) (A) |
Пересылка в регистр прямо-адресуемого байта |
MOV Rn, ad |
A8 – AF |
3 |
2 |
2 |
(Rn) (ad) |
Загрузка в регистр константы |
MOV Rn, #d |
78 – 7F |
2 |
2 |
1 |
(Rn) #d |
Пересылка по прямому адресу аккумулятора |
MOV ad, A |
F5 |
3 |
2 |
1 |
(ad) (A) |
Пересылка по прямому адресу регистра |
MOV ad, Rn |
88 – 8F |
3 |
2 |
2 |
(ad) (Rn) |
Пересылка прямоадресуемого байта по прямому адресу |
MOV add, ads |
85 |
9 |
3 |
2 |
(add) (ads) |
Пересылка байта из РПД по прямому адресу |
MOV ad, @Ri |
86 – 87 |
3 |
2 |
2 |
(ad) ((Ri)) |
Пересылка по прямому адресу константы |
MOV ad, #d |
75 |
7 |
3 |
2 |
(ad) #d |
Пересылка в РПД из аккумулятора |
MOV @Ri, A |
F6 – F7 |
1 |
1 |
1 |
((Ri)) (A) |
Пересылка в РПД прямо-адресуемого байта |
MOV @Ri, ad |
66 – 67 |
3 |
2 |
2 |
((Ri)) (ad) |
Пересылка в РПД константы |
MOV @Ri, #d |
76 – 77 |
2 |
2 |
1 |
((Ri)) #d |
Загрузка указателя данных |
MOV DPTR, #d16 |
90 |
13 |
3 |
2 |
(DPTR) #d16 |
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+DPTR |
93 |
1 |
1 |
2 |
((A) +(DPTR)) |
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+PC |
83 |
1 |
1 |
2 |
(PC) (PC)+1, (A) ((A)+(PC)) |
Пересылка в аккумулятор байта из ВПД |
MOVX A, @Ri |
E2 – E3 |
1 |
1 |
2 |
(A) ((Ri)) |
Пересылка в аккумулятор байта из расширенной ВПД |
MOVX A,@DPTR |
E0 |
1 |
1 |
2 |
(A) ((DPTR)) |
Пересылка в ВПД из аккумулятора |
MOVX @Ri, A |
F2 – F3 |
1 |
1 |
2 |
((Ri)) (A) |
Пересылка в расширенную ВПД из аккумулятора |
MOVX @DPTR,A |
F0 |
1 |
1 |
2 |
((DPTR)) (A) |
Загрузка в стек |
PUSH ad |
C0 |
3 |
2 |
2 |
(SP) (SP) + 1, ((SP)) (ad) |
Извлечение из стека |
POP ad |
D0 |
3 |
2 |
2 |
(ad) (SP), (SP) (SP) - 1 |
Обмен аккумулятора с регистром |
XCH A, Rn |
C8 – CF |
1 |
1 |
1 |
(A) ↔ (Rn) |
Обмен аккумулятора с прямо-адресуемым байтом |
XCH A, ad |
C5 |
3 |
2 |
1 |
(A) ↔ (ad) |
Обмен аккумулятора с байтом из РПД |
XCH A, @Ri |
C6 –C7 |
1 |
1 |
1 |
(A) ↔ ((Ri)) |
Обмен младших тетрад аккумулятора и байта РПД |
XCHD A, @Ri |
D6 – D7 |
1 |
1 |
1 |
(A0…3) ↔((Ri)0…3) |
Команда XCH (Exchange - обмен) используется для обмена операндами между аккумулятором и ячейкой РПД с различными вариантами адресации, а команда XCHD – обмен младшими тетрадами (биты 0 – 3) с косвенной адресацией.
Группа команд - пересылок микроконтроллера имеет следующую особенность - в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение PSW в аккумулятор может быть выполнено командой
MOV A, PSW, которая преобразуется ассемблером к виду
MOV А, 0D0h (E5 D0), где Е5 – код операции, а D0 – операнд (адрес PSW).
Кроме того, следует отметить, что в микроЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации:
А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.