MyTetra Share
Делитесь знаниями!
Принцип работы Ассемблера в AVR Studio
Время создания: 02.12.2021 18:07
Автор: Котов Игорь Юрьевич
Раздел: Компьютер - Программирование - Ассемблеры - Архитектура AVR - Ассемблер в AVR Studio
Запись: xintrea/mytetra_syncro/master/base/1638457673lyalrb3mbl/text.html на raw.github.com

Полное содержание серии статей "Программирование микроконтроллеров AVR" расположено по адресу:


https://cxem.net/mc/book.php



Введение


В поддержку своей архитектуры в 1997 г. Atmel выпустила AVR Studio - программный продукт для разработки приложений на основе AVR-микроконтроллеров. AVR Studio представляет собой интегрированную среду разработки IDE (Integrate Development Environment), объединяя в себе большое количество различных инструментов для написания и отладки программ. Продвигая на рынке новую продукцию, Atmel с самого начала попыталась сделать ее максимально открытой для потребителя. AVR Studio не является исключением. Последняя версия IDE, равно как и любая информация по AVR-микроконтроллерам, всегда свободно доступна на сайтах производителя.

Минимальный набор разработчика в IDE представлен фирменным ассемблером и симулятором. Однако AVR Studio легко интегрируется со многими программными средствами сторонних производителей. И на сегодняшний день, в частности, в нее включена поддержка постоянно развивающегося компилятора языка Си WinAVR основанного на принципах GNU. Это очень мощный и к тому же бесплатный инструмент, что очень редко встречается у микроконтроллеров уровня AVR.



Принцип работы ассемблера

Ассемблер относится к языкам программирования низкого уровня. Его основой является множество команд, уникальное для каждого микропроцессора. Поэтому ассемблер является также и аппаратно-зависимым. Он может использоваться только совместно с архитектурой определенного типа. Каждое семейство микропроцессоров имеет свой собственный вариант этого языка.

Каждая инструкция ассемблера представляет собой символическое изображение соответствующей машинной команды со своим кодом операции (КОП). Команды ассемблера имеют удобочитаемый вид и названия, ассоциирующиеся с их действием. Так команда пересылки между двумя регистрами общего назначения (РОНами) mov Rd, Rr является прототипом 16-разрядного кода операции 0010 11rd dddd rrrr. Битовые поля ddddd и rrrrr в нем определяют адреса регистров приемника и источника соответственно. Например, для пересылки регистра R5 в R22 необходимо записать на ассемблере mov R22, R5 или 0010 1101 0110 0101 на машинном языке. Разница в восприятии очевидна.

Каждую команду ассемблера можно логически разделить на две части: мнемонику и операнды.


Мнемоника Операнд 1 Операнд 2

mov Rd, Rr


Мнемоника является обязательной частью команды и определяет ее функциональное назначение. Операнды представляют собой параметры команды. В качестве операндов могут выступать числовые значения, адреса и смещения относительно адресов. Команды AVR, в зависимости от назначения, могут иметь до двух параметров.

Главная задача ассемблера – преобразование исходного текста пользовательской программы в машинный код, пригодный для записи в память программ микроконтроллера. Сам процесс преобразования называют компиляцией, а программу ассемблер – компилятором.

Конечным результатом работы компилятора является файл с исполняемым кодом. Если программа использует инициализированные данные, размещенные в энергонезависимой памяти, то в дополнении к этому, будет сгенерирован также файл для EEPROM. Информация, размещенная в этих файлах, используется программатором при программировании FLASH-память программ и/или EEPROM-память данных.

Существует большое количество различных форматов выходных файлов, но самый распространенный из них 16-тиричный Intel Hex Format. Файлы такого типа, как правило, имеют два различных расширения: .hex у файлов содержащих коды программ, и .epp у файлов, содержащих данные для записи EEPROM-памяти.

В соответствии со своей технологией работы, компилятор создает также объектный файл с расширением .obj. В нем размещена служебная информация для внутреннего пользования (относительные и абсолютные адреса операндов, место расположения объектов в пределах сегмента и т.д.). Объектный файл может быть необходим для различных отладочных средств. Программисту же никогда не приходится вмешиваться в его содержимое.

После сборки проекта могут быть сгенерированы также файлы, имеющие расширение .lst (файл листинга), .map и некоторые другие. В первом из них находится полный отчет о проделанной компилятором работе. Во втором приводится перечень всех символьных имен, встретившихся в программе, и их числовых значений.


 
MyTetra Share v.0.59
Яндекс индекс цитирования