Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MPU_LAB_1

.docx
Скачиваний:
94
Добавлен:
18.05.2014
Размер:
23.22 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» имени

В. И. Ульянова (Ленина)

Кафедра ИИСТ

Лабораторная работа 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, такими как запись в регистры и чтение. Научились организовывать работу подпрограмм, блока задержки и посылать загнал на вывод МК. Ознакомились с принципами организации и отладки программ для МК.