71231

Создание и компиляция проекта в среде IAR. Написание простейшего модуля на языке Assembler

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Целью данной работы является ознакомление с одной из популярнейших сред разработки программ для микроконтроллеров IAR Embedded Workbench IDE. Последовательность действий при создании проекта: Создадим новый проект Project=>Create New Project.

Русский

2014-11-04

139.57 KB

6 чел.

7

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение                                                                         

                       высшего профессионального образования

«ТОМСКИЙ  ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ»

(ТУСУР)

Кафедра Электронных Средств Автоматизации и Управления

(ЭСАУ)

Лабораторная работа №1

Создание и компиляция проекта в среде IAR. Написание простейшего модуля на языке Assembler

По дисциплине

«Микропроцессорные средства систем автоматизации и управления»

Выполнил ст. гр. 530

Рачеев А.О.

«___» ___________

Проверил ст. пр. ЭСАУ

Недяк С.П.

«___» ___________


Целью  данной   работы   является   ознакомление  с  одной  из  популярнейших  сред разработки программ для микроконтроллеров IAR Embedded Workbench IDE.

  1.  Последовательность действий при создании проекта:

Создадим новый проект Project=>Create New Project.

Выбираем шаблон проекта( ProjectTemplates  ) : C-main

 Рисунок 1.1

Сохраняем проект под   именем arr.

Далее в свойствах  проекта выбираем  модель микроконтроллера Milandr 1986BE9x  (Рис 1.2).  Для этого правой кнопкой мыши щелкаем по нашему проекту,  выбираем Options…и в GeneralOption

Рисунок 1.2

на закладке  Target     (Рис 1.3) выберем модель микроконтроллера   Milandr 1986BE9xp[-0pp055555555555555555…….

Рисунок 1.3

В  случае,   если  в  списке  отсутствует  Milandr,  попробуйте  проверить  файлы,  которые скопировали в корневую директорию среды разработки IAR.

  1.  Разработка первой программы для микроконтроллера

Исходный текст функции main() на языке С:

В открытом окне  main  введем следующий  код:

int main()

{

 

 float a=5.75;

 float r;

 for(int i=5; i<a; i++)

{

   r=a*4;

}

 

 return 0;

 

}

Рисунок 2.1 Пример работы программы в ассемблере.

Int main ()

Main:

PUSH    {R4, R6, LR}           //сохраняем регистры.

float a=5.75

LDR.N    R4,  ??main_0

//Загрузка адреса метки в регистр R4. Используем 1б-битную команду Thumb; N = Narrow (узкая).

for(int i=5; i<a ; i++)

int i=5

MOVS    R5, #5   // Помещаем  в регистр R5 число 5. Наличие суффикса S -  состояние флагов условий изменяется в соответствии с результатом операции (APSR).

Помещение в регистр R4 числа 1.5 (1069547520 -представление числа 1.5 в памяти). Наличие суффикса  S -  состояние флагов условий изменяется в соответствии с результатом операции (APSR). Используем 32-битную команду Thumb-2; W- Wide (широкая)

int a=3

MOVS R0, #3   Помещение в регистр R0 числа 3. Наличие суффикса S.

float c=2.5;   

LDR.N  R5, ??main_0   

Загрузка адреса метки в регистр R5. Используем 1б-битную команду Thumb; N = Narrow (узкая)

float d=5.5;

LDR.N  R6, [PC, #0x20]

Загрузка в регистр R6  содержимого ячейки памяти по адресу (PC + 0x20). Наличие суффикса N.

b=b-a;

BL __aeabi_i2f     Переход к метке  «__aeabi_i2f  »

MOVS R1, R0     Помещение содержимого регистра R0 в регистр R1. Наличие суффикса S.

MOVS R0, R4   Помещение содержимого регистра R4 в регистр R0. Наличие суффикса S.

BL __aeabi_fsub  Переход к метке  «__aeabi_fsub » Функция, осуществляющая вычитание.

MOVS R4, R0     Помещение содержимого регистра R0 в регистр R4. Наличие суффикса S.

d=d*c;

MOVS R0, R6     Помещение содержимого регистра R6 в регистр R0. Наличие суффикса S.

MOVS R1, R5     Помещение содержимого регистра R5 в регистр R1. Наличие суффикса S.

BL __aeabi_fmul  Переход к метке « __aeabi_fmul  » Функция, осуществляющая  умножение

MOVS R6, R0     Помещение содержимого регистра R0 в регистр R6. Наличие суффикса S.

Следующие функции выполняют действия (инициализация, вычитание, умножение) с переменными типа Float, описанные на си, в ассемблере:

??main_0   

__aeabi_i2f     

__aeabi_fsub

__aeabi_fmul  

 Функции уже заложены в программе и соответственно заложен эмулятор с плавающей точкой, сделанный разработчиками (за что им спасибо), для выполнения операций с плавающей точкой.

Return 0;

MOVS R0, #0         Помещение в регистр R0 числа 0

POP  {R4-R6, PC}  Восстанавливаем содержимое реrистров R4,R5,R6 и возвращаемся

Описание синтаксиса команд PUSH и РОР:

Загрузка регистров в стек и извлечение регистров из стека («полный» убывающий стек).

Синтаксис:

PUSH{coпd} reglist

POP{coпd} reglist

где

coпd - необязательный суффикс условия выполнения;

reglist -  непустой список регистров, заключённый в фигурные скобки. Может включать в себя диапазоны регистров. При наличии в списке более одного регистра или диапазона регистров элементы списка разделяются запятыми.

Ограничения

. reglist не должен содержать SP.

. reglist команды PUSH не должен содержать Ре.

. reglist команды РОР не должен содержать РС, если в нём содержится LR.

При наличии Ре в reglist команды РОР:

. бит [О] загружаемого значения должен быть установлен в 1 для корректного выполнения команды; переход осуществляется по этому адресу, выровненному на границу полуслова;

. если команда условно выполняемая, то она должна быть последней командой в IT-блоке.

 

Вывод: В ходе лабораторной работы были освоены основные  команды ассемблера с помощью IAR.


 

А также другие работы, которые могут Вас заинтересовать

18452. Использование шаблонов в PHP 200 KB
  Серверные технологии разработки webсайтов Использование шаблонов в PHP Что такое шаблоны и зачем они нужны Что такое шаблон в языке программирования Можно сказать что шаблон это текст с переменными внутри него. При обработке шаблона происходит замена переменных на
18453. ТОЛКОВАНИЕ НОРМ ПРАВА 77.46 KB
  ТЕМА 14. ТОЛКОВАНИЕ НОРМ ПРАВА 14.1. Понятие и значение толкования норм права 14.2. Уяснение смысла норм права приемы толкования 14.3. Результаты толкования толкование норм права по объему 14.4. Разъяснение норм права Контрольные вопросы Темы рефератов ...
18455. ФЕДЕРАТИВНОЕ УСТРОЙСТВО РОССИИ 261.5 KB
  ТЕМА 17. ФЕДЕРАТИВНОЕ УСТРОЙСТВО РОССИИ 17.1. Основные этапы развития российского федерализма 17.2. Общая характеристика и основные принципы федеративного устройства России их особенности 17.3. Предметы ведения и полномочия РФ и ее субъектов 17.4. Правовой статус ...
18456. ОБЩЕСТВО, ПОЛИТИЧЕСКАЯ ВЛАСТЬ, ГОСУДАРСТВО. ПОЛИТИЧЕСКАЯ СИСТЕМА ОБЩЕСТВА 177.53 KB
  ОСНОВНЫЕ ПОЛОЖЕНИЯ О ПРАВЕ ТЕМА 1. ОБЩЕСТВО ПОЛИТИЧЕСКАЯ ВЛАСТЬ ГОСУДАРСТВО. ПОЛИТИЧЕСКАЯ СИСТЕМА ОБЩЕСТВА. 1.1. Общество 1.2. Определение власти 1.3. Происхождение государства 1.4. Понятие и сущность государства 1.5. Функции государства 1.6. Форма государс...
18457. ПОНЯТИЕ И СОЦИАЛЬНОЕ НАЗНАЧЕНИЕ ПРАВА 57.63 KB
  ТЕМА 2. ПОНЯТИЕ И СОЦИАЛЬНОЕ НАЗНАЧЕНИЕ ПРАВА 2.1. Понятие права 2.2. Сущность и социальное назначение права 2.3. Соотношение государства и права 2.4. Функции права 2.5. Принципы права Контрольные вопросы Темы рефератов 2.1. Понятие права Право воз
18458. ПРАВО В СИСТЕМЕ СОЦИАЛЬНЫХ НОРМ 49.97 KB
  ТЕМА 3. ПРАВО В СИСТЕМЕ СОЦИАЛЬНЫХ НОРМ 3.1. Социальные нормы и их виды 3.2. Взаимоотношение права и морали 3.3. Моральные нормы юристапрофессионала Контрольные вопросы Темы рефератов 3.1. Социальные нормы и их виды Люди в современном цивилизованном
18459. ПРАВОСОЗНАНИЕ И ЮРИДИЧЕСКАЯ КУЛЬТУРА 70.42 KB
  ТЕМА 4. ПРАВОСОЗНАНИЕ И ЮРИДИЧЕСКАЯ КУЛЬТУРА 4.1. Понятие правосознания и его функции 4.2. Основные виды правосознания 4.3. Правовое воспитание 4.4. Правовая культура Контрольные вопросы Темы рефератов 4.1. Понятие правосознания и его функции Будучи
18460. НОРМА ПРАВА 110.03 KB
  ТЕМА 5. НОРМА ПРАВА 5.1. Понятие и характерные черты норм права 5.2. Структура норм права 5.3. Виды норм права Контрольные вопросы Темы рефератов 5.1. Понятие и характерные черты норм права Правовая норма это исходный элемент первичная клеточка права....