Контрольная работа: Программирование микроконтроллера
LD Rr, Y ;
LDRr, Z ,
где X, Y, Z – 16-ти разрядные регистры для хранения адреса ячейки ОЗУ, из которой пересылаются данные. Каждый из этих регистров имеет в своем составе два РОНа. Структура регистров представлена в таблице 3.
Таблица 3
16-ти разрядный регистр | Младший разряд | Старший разряд |
X | R26 | R27 |
Y | R28 | R29 |
Z | R30 | R31 |
РОН |
· Перед использованием команды LD адрес ячейки ОЗУ должен быть предварительно записан в соответствующий регистр, который используется в команде.
· Для прямой адресации данных из РОНов в ОЗУ используем команду STSn, Rr , где n – адрес ячейки ОЗУ.
· Для косвенной адресации данных из РОНов в ОЗУ используем команду
ST X, Rr ;
ST Y, Rr ;
STZ, Rr .
· Адрес ячейки ОЗУ должен быть предварительно записан в один из регистров X, Y, или Z.
· Для выполнения операции сложения используем команду ADDRa, Rb , где a, b – номера регистров, где хранятся операнды (a=0…31, b=0…31). Результат будет записан в регистр Ra.
· Для уменьшения содержимого регистра на единицу используем команду DECRr .
· Для выполнения требуемой в задании операции сравнения используем команду CPSERa, Rb .
· Команда сравнивает содержимое регистров Ra, Rb, и в случае равенства пропускает следующую команду.
· Для вызова подпрограммы используем команду CALL .
· Для выхода из подпрограммы и возврата в программу используем команду RET .
· В подпрограмме для сохранения содержимого регистра Rr в стеке используем команду PUSHRr .
· Для извлечения из стека в регистр Rr используем команду POPRr.
· При этом учитываем то, что данные должны извлекаться из стека в порядке, обратном загрузке – «последний вошел – первый вышел».
· Для «зацикливания» программы используем команду RJMP.
Текст программы.
Инициализация указателя стека:
Адрес стека 10F1, для его задания в регистр SPL помещаем младший байт ; F6, в регистр SPH – старший 10.
· LDIR20, $F1 ; загрузка регистра R20 младшим байтом адреса начала стека
· OUTSPL, R20 ; загрузка младшего байта указателя стека из регистра
· LDIR20, $10 ; загрузка регистра R20 старшим байтом адреса начала стека
· OUTSPH, R20 ; загрузка старшего байта указателя стека из регистра
Выполнение сложения чисел 17, 5 и 67: