реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AVR Studio Assembler, #include "file"
marcinio
сообщение Oct 28 2007, 18:28
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861



Короче говоря - код моей проги стал слишком громоздким и непонятным. Вот я и решил его разделить. Сделал новый *.asm документ, где теперь хранитса модуль TWI операций(сделал его так, чтобы было БЫ удобно пользовать и в других проектах - просто готовый модуль).
Прибавил я документ к MAIN.asm (в MAIN.asm написал #include "TWI_Operation_Module").
Но странно то, что дебаггер начинает прогу с TWI_Operation_Module, а не с MAIN.asm, где кстати все векторы interrupt и конешно же - сама программа. 07.gif
Как надо прибавлять файлы с кодом и чтобы прога началась с MAIN.asm!? smile.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 28 2007, 18:56
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



В ассемблере нет линковки, подключаемые файлы вставляются по месту директивы include.
Потом весь текст транслируется.
Цитата(marcinio @ Oct 28 2007, 21:28) *
Как надо прибавлять файлы с кодом и чтобы прога началась с MAIN.asm!? smile.gif

.inc файлы вставлять в начале main файла, .asm файлы - в конце:
Код
.include "m16def.inc"

.dseg

...

.cseg

.ORG 0

код main.asm
....

.include "xxxx.asm"
.include "zzzz.asm"
Go to the top of the page
 
+Quote Post
Yura_K
сообщение Oct 28 2007, 18:57
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 5-05-06
Из: Ekaterinburg, Russia
Пользователь №: 16 821



Цитата(marcinio @ Oct 29 2007, 00:28) *
Короче говоря - код моей проги стал слишком громоздким и непонятным. Вот я и решил его разделить. Сделал новый *.asm документ, где теперь хранитса модуль TWI операций(сделал его так, чтобы было БЫ удобно пользовать и в других проектах - просто готовый модуль).
Прибавил я документ к MAIN.asm (в MAIN.asm написал #include "TWI_Operation_Module").
Но странно то, что дебаггер начинает прогу с TWI_Operation_Module, а не с MAIN.asm, где кстати все векторы interrupt и конешно же - сама программа. 07.gif
Как надо прибавлять файлы с кодом и чтобы прога началась с MAIN.asm!? smile.gif

Используйте директиву .org для размещения в памяти таблицы векторов.
В прерывании RESET делайте переход на точку входа в программу.


--------------------
Чудес не бывает - бывает мало знаний и опыта!
Go to the top of the page
 
+Quote Post
marcinio
сообщение Oct 28 2007, 19:07
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861



Цитата
.inc файлы вставлять в начале main файла, .asm файлы - в конце:

Как всё просто - сработало - спасибо! smile.gif
Go to the top of the page
 
+Quote Post
Guest_=AVR=_*
сообщение Oct 28 2007, 22:08
Сообщение #5





Guests






Цитата
.inc файлы вставлять в начале main файла, .asm файлы - в конце:
.inc-файлы вставлять ТАМ, где надо, а не в начале или в конце. В идеологии ассемблера это буквальная подстановка, сродни макросам в С, и производится она непосредственно там, где дается директива .include - строка в строку. Простейший вариант структурирования кода - вычленение функционально родственных фрагментов в отдельные .inc-файлы с последующим их включением в общий код там, где это нужно.

В начале текста нужно размещать только штатный архитектурный .inc-файл (XXXdef.inc), а свои вычлененные в .inc фрагменты - там, где это нужно. Разумеется, при этом следует учитывать все "стандартные" ограничения AVRASM2 типа его патологической нелюбви к Forward References - многопроходный ассемблер все это разруливает на раз, а это угробище впадает в ступор. Именно поэтому я пишу на IAR AVR ASM, тараканы которого имеют меньший размер и куда меньшую зловредность по сравнению с AVRASM2 aka AVR Studio Assembler 2

Сообщение отредактировал =AVR= - Oct 28 2007, 22:09
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 29 2007, 07:39
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(=AVR= @ Oct 29 2007, 00:08) *
...Именно поэтому я пишу на IAR AVR ASM...

Который, также как и AVR Studio, бесплатен.
Скачивается с сайта Avrfreaks.
Последний линкер (тоже бесплатный) можно скачать, например, здесь.
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 29 2007, 10:00
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=AVR= @ Oct 29 2007, 01:08) *
.inc-файлы вставлять ТАМ, где надо, а не в начале или в конце. В идеологии ассемблера это буквальная подстановка, сродни макросам в С, и производится она непосредственно там, где дается директива .include - строка в строку. Простейший вариант структурирования кода - вычленение функционально родственных фрагментов в отдельные .inc-файлы с последующим их включением в общий код там, где это нужно.

inc файл предполагает описание макросов, констант, имен регистров и т.п. природа inc файла аналогична сишному .h.
asm - файл непосредственно код.
Поэтому .inc так же как и .h в C целесообразно подключать вначале файла, а asm - по месту, и наиболее благоприятное место для них - в конце файла. Таким образом легко можно просмотреть какие файлы подключены к проекту не блуждая по километровому main.

Цитата
В начале текста нужно размещать только штатный архитектурный .inc-файл (XXXdef.inc), а свои вычлененные в .inc фрагменты - там, где это нужно.

Штатный xxxdef.inc мне например нравится включать в свой собственный hal.inc, который в свою очередь я вставляю как и все inc файлы в начале main.


Цитата
Разумеется, при этом следует учитывать все "стандартные" ограничения AVRASM2 типа его патологической нелюбви к Forward References

Нет у него никакой паталогической нелюбови к Forward Refs, вы что-то попутали.

Цитата
Именно поэтому я пишу на IAR AVR ASM

Каждому конечно свое, но ассемблер чувствительный к регистру - это уже не ассемблер.
Go to the top of the page
 
+Quote Post
Guest_=AVR=_*
сообщение Oct 29 2007, 10:18
Сообщение #8





Guests






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

- Нелюбовь Atmel AVRASM[2] к FwdRef известна, признана, и так и живет поныне. Проявляется не всегда, а в определенных обстоятельствах, в каких именно - не помню, а копать лень.

- Настоящему индейцу не западло добавить ключик -s-, чтобы отключить чувствительность IAR AVR ASM к регистру символов smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01418 секунд с 7
ELECTRONIX ©2004-2016