MPU_LAB_1
.docxСанкт-Петербургский государственный электротехнический университет «ЛЭТИ» имени
В. И. Ульянова (Ленина)
Кафедра ИИСТ
Лабораторная работа 1
СОЗДАНИЕ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕРА В СРЕДЕ ECLIPSE
Факультет: ИБС
Группа: 0587
Студенты: Морозова О.М.
Вяльмискин М.В.
Преподаватель: Марченков Р.Ю.
Санкт-Петербург
2014
Лабораторная работа 1.
СОЗДАНИЕ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕРА В СРЕДЕ ECLIPSE
Цель работы: освоение технологии создания программ на языке
низкого уровня.
Задание
1. Создать проект.
2. Набрать исходный текст программы на языке ассемблера.
3. Отладить программу.
Отчет должен содержать:
1. Титульный лист и задание.
2. Алгоритм работы программы.
3. Описание использованных регистров.
4. Листинг программы.
5. Описание технологии разработки и отладки программ на языке ассемблера.
1. Алгоритм работы программы.
Start
r0 - загружаем адрес диода
Используем РА18 как выход
r1 – загружаем адрес set Output Data Register
Включаем выход / Светодиод гаснет
r4:=0;
r4:=r4+1;
r4==0x100000
r1 – загружаем адрес Clear Output Data Register
Включаем выход / Светодиод гаснет
r4:=0;
r4:=r4+1;
r4==0x100000
2. Описание регистров.
r0 – Адрес вывода светодиода.
r1 – Служит для записи адресов: PIO Enable Register, Clear Output Data Reg и Set Output Data Register
r4 – используется для счетчика «wait»
4. Листинг программы.
00100020 <start>:
@---------------------------------------------------------------
.section .text.program
@ Подготавливаем периферию
start:
mov r0, #0x040000 @ Используем PA18
100020: e3a00701 mov r0, #262144 ; 0x40000
ldr r1, =PIOA_PER @ Загружаем адрес PIO Enable Register
100024: e59f1038 ldr r1, [pc, #56] ; 100064 <wait+0x14>
str r0, [r1] @ Использовать режим общего дискр. вв/в.
100028: e5810000 str r0, [r1]
ldr r1, =PIOA_OER @ Загружаем адрес регистра
10002c: e59f1034 ldr r1, [pc, #52] ; 100068 <wait+0x18>
@ Output Enable Register
str r0, [r1] @ Используем PA18 как выход
100030: e5810000 str r0, [r1]
00100034 <blink>:
blink: @ Мигаем
ldr r1, =PIOA_SODR @ Загружаем адрес Set Output Data Register
100034: e59f1030 ldr r1, [pc, #48] ; 10006c <wait+0x1c>
str r0, [r1] @ Включаем выход / светодиод гаснет
100038: e5810000 str r0, [r1]
bl wait @ Пауза
10003c: eb000003 bl 100050 <wait>
ldr r1, =PIOA_CODR @ Загружаем адрес Clear Output Data Reg.
100040: e59f1028 ldr r1, [pc, #40] ; 100070 <wait+0x20>
str r0, [r1] @ Выключаем выход / светодиод зажигается
100044: e5810000 str r0, [r1]
bl wait @ Пауза
100048: eb000000 bl 100050 <wait>
b blink @ Повторяем мигание
10004c: eafffff8 b 100034 <blink>
00100050 <wait>:
@---------------------------------------------------------------
@ Подпрограмма задержки
wait:
ldr r4, =0 @ Инициализируем r4 нулём
100050: e3a04000 mov r4, #0
.Lwait:
add r4, #1 @ Инкремент
100054: e2844001 add r4, r4, #1
cmp r4, #0x100000 @ Сравнить с числом
100058: e3540601 cmp r4, #1048576 ; 0x100000
bne .Lwait @ Если не равно, считаем дальше
10005c: 1afffffc bne 100054 <wait+0x4>
mov pc, lr @ Если равно, выходим из подпрограммы
3. Описание технологии разработки и отладки программ на языке ассемблера.
1) Разработка программы всегда следует начинать с «шапки программы». В ней объявляются переменные и указываются дополнительные файлы и прерывания.
2) Инициализация и установка начальных параметров и режимов работы.
3) Написание команд, выполняемых процессором.
4) Написание подпрограммы. Для того, чтобы процессор после выполнения команд не завершал свою работу, нужно задать бесконечный цикл, используя метки и переходы.
Также могут возникнуть логические ошибки, проявляющиеся во время выполнения программы. Они заключаются в том, что программа работает не так, как было определено
заданием (например, выдаёт неверные результаты вычислений). Для поиска ошибок подобного рода используется отладчик. Отладчик позволяет управлять выполнением программы на ЭВМ (например, производить пошаговое исполнение программы) и наблюдать за соответствующими изменениями состояния ЭВМ.
Вывод: При выполнении лабораторной работы мы ознакомились со средой разработки ECLIPSE. Научились пользоваться простейшими командами языка программирования ASSEMBLER, такими как запись в регистры и чтение. Научились организовывать работу подпрограмм, блока задержки и посылать загнал на вывод МК. Ознакомились с принципами организации и отладки программ для МК.