Lpm R17, Z ; загрузка числа 137 в R17
;...
var: .db $50, 137 ; константы $50 и 137
ЗАДАНИЕ
Составить программу сложения двух целых 8-разрядных чисел:
1) с использованием прямой регистровой адресации РОН. Результат сложения в этом и последующих пунктах задания сохранить в РОН. Значения операндов взять из задания лабораторной работы № 1 (числа А и В);
2) с использованием непосредственной адресации оперативной памяти данных. Для этого зарезервировать в ОЗУ байты под слагаемые с помощью директив .byte. Занести слагаемые в зарезервированные ячейки ОЗУ командой STS с непосредственной адресацией. Сложить операнды, предварительно загрузив их в РОН командой LDS с непосредственной адресацией;
3) с использованием косвенной адресации оперативной памяти данных. Адреса слагаемых в ОЗУ загрузить в регистры X и Y с помощью команды LDI и функций low и high. Занести слагаемые в зарезервированные ячейки ОЗУ командой ST с косвенной адресацией. Сложить операнды, предварительно загрузив их в РОН командой LD с косвенной адресацией;
4) с использованием косвенной адресации оперативной памяти данных со смещением. Для этого зарезервировать в ОЗУ байты под слагаемые в одной директиве .byte. Адрес начала блока данных загрузить в регистр Z с помощью команды LDI и функций low и high. Занести слагаемые в зарезервированные ячейки ОЗУ командой STD с косвенной адресацией со смещением. Сложить операнды, предварительно загрузив их в РОН командой LDD с косвенной адресацией со смещением;
5) с использованием косвенной адресации оперативной памяти данных с предекрементом. Для этого зарезервировать в ОЗУ байты под слагаемые в одной директиве .byte. В регистр Z загрузить адрес ячейки ОЗУ, следующей за блоком зарезервированных байтов. Занести слагаемые в зарезервированные ячейки ОЗУ командой ST с косвенной адресацией с предекрементом. Сложить операнды, предварительно загрузив их в РОН командой ld c косвенной адресацией ячеек ОЗУ с предекрементом;
6) с использованием косвенной адресации оперативной памяти данных с постинкрементом. Для этого зарезервировать в ОЗУ байты под слагаемые в одной директиве .byte. В регистр Z загрузить адрес начала блока зарезервированных байтов. Занести слагаемые в зарезервированные ячейки ОЗУ командой ST с косвенной адресацией с постинкрементом. Сложить операнды, предварительно загрузив их в РОН командой LD с косвенной адресацией с постинкрементом;
7) с использованием адресации константы в памяти программ. Для этого задать слагаемые в памяти программ в одной директиве .db. Сложить операнды, предварительно загрузив их в РОН с помощью команды LPM. Для пересылки слагаемых между РОН использовать команду MOV;
8) с использованием адресации константы в памяти программ с постинкрементом. Для загрузки слагаемых в РОН использовать команду LPM с постинкрементом.
В диалоговом окне AVR Simulator Options в разделе Device Selection установить тактовую частоту моделирования работы микроконтроллера, равную 8,0 МГц (поле Frequency).
Выполнить трансляцию и отладку созданных программ. По данным, выводимым после трансляции на закладке Build окна Output, проанализировать использование памяти программ (Program memory usage) под код программы (Code) и константы (Constants), оценить объём неиспользованной (Unused) и общей занятой (Total) памяти. Занести эти сведения в отчёт (табл. 3).
При отладке программ использовать средства наблюдения за содержимым регистров и ячеек памяти. По полю Cycle Counter объекта Processor закладки I/O окна Workspace определить число тактов выполнения программы, по полю Stop Watch – время выполнения программы (до выполнения команды, организующей бесконечный цикл). Зафиксировать эти сведения в отчёте (табл. 3). По результатам выполнения программ сделать выводы.
Таблица 3
Вариант программы | ||||||||
Объём памяти программ, занятой под код программы, слов | ||||||||
Объём памяти программ, занятой под константы, слов | ||||||||
Объём неиспользованной памяти программ, слов | ||||||||
Общий объём занятой памяти программ, слов | ||||||||
Число тактов выполнения программы | ||||||||
Время выполнения программы, мкс |
Примечание. Все программы рекомендуется включить в один проект. При этом программа, подлежащая трансляции, задаётся командой Set as entry file контекстного меню дерева иерархии проекта. Подлежащая трансляции программа помечается в дереве иерархии проекта символом (все прочие исходные файлы проекта имеют символ ).
СОДЕРЖАНИЕ ОТЧЁТА
Отчёт должен содержать: титульный лист с указанием номера и названия лабораторной работы, номера группы и фамилий выполнивших работу; цель работы; листинги трансляции программ и сведения, указанные в задании; схемы образования адреса для использованных способов адресации.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1.Адресация РОН и регистров ввода-вывода AVR-микроконтроллеров.
2.Способы адресации памяти данных AVR-микроконтроллеров.
3.Способы адресации памяти программ AVR-микроконтроллеров.
4.Особенности выполнения арифметических и логических операций в AVR-микро-контроллерах.
5.Назначение и использование регистров X, Y и Z.