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.


 

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

65096. Клад из с. Новая Казанка Уральской области 159 KB
  Монетный состав клада, несмотря на его скромные размеры, довольно необычен и представляет научный интерес даже в таком составе. Монетные дворы, представленные в комплексе — Сарай ал-Махруса, Мохша, Сарай, Хорезм, Сарай ал-Джадид...
65097. «Железные псы» Батуидов (Шибан и его потомки в войнах XIII в.) 617 KB
  Согласно Рашид ад Дину и более поздним зависимым от него источникам Шибан 5 был пятым сыном Джучи Рашид ад Дин 1960 С. Старше Шибана по Рашид адДину были Орда Бату Берке и Беркечар. Несмотря на то что Рашид адДин в генеалогии Джучидов позиционирует Шибана пятым сыном...
65098. Буддизм в культуре Золотой Орды 288 KB
  Среди довольно обильных данных письменных источников, характеризующих конфессиональную ситуацию в Золотой Орде, сведения о буддизме единичны. По этой причине нередко даже специальные исследования религии и верований...
65099. МАВЗОЛЕИ ЗОЛОТОЙ ОРДЫ: ГЕОГРАФИЧЕСКИЙ ОБЗОР И ОПЫТ ТИПОЛОГИЗАЦИИ 141 KB
  Бартольд нередко монгольские ханы после принятия ислама уничтожали тайну окружавшую могилы их языческих предшественников и строили над этими могилами мавзолеи мусульманского типа 5 приводя в пример самого Тимура который возвёл мавзолей над могилой своего отца-язычника.
65100. МУСУЛЬМАНСКИЙ ПОГРЕБАЛЬНЫЙ ОБРЯД В ЗОЛОТОЙ ОРДЕ 4.83 MB
  Основу источниковой базы для нашей работы составили сведения содержащиеся в научных отчётах об археологических исследованиях на территории Поволжья Юга России в Татарстане в республике Башкортостан и на территории Казахстана хранящиеся в архиве Института археологии...
65102. Погребальные памятники центральных областей Улуса Джучи (к вопросу об исламизации населения Золотой Орды) 169.5 KB
  Привлечение такого источника как погребальные памятники для изучения проблемы исламизации населения Золотой Орды с точки зрения археологии позволило бы не только рассмотреть этот процесс с политической стороны хорошо освещённой в письменных источниках но и детально изучить...