Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR Studio Assembler
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
marcinio
Короче говоря - код моей проги стал слишком громоздким и непонятным. Вот я и решил его разделить. Сделал новый *.asm документ, где теперь хранитса модуль TWI операций(сделал его так, чтобы было БЫ удобно пользовать и в других проектах - просто готовый модуль).
Прибавил я документ к MAIN.asm (в MAIN.asm написал #include "TWI_Operation_Module").
Но странно то, что дебаггер начинает прогу с TWI_Operation_Module, а не с MAIN.asm, где кстати все векторы interrupt и конешно же - сама программа. 07.gif
Как надо прибавлять файлы с кодом и чтобы прога началась с MAIN.asm!? smile.gif
defunct
В ассемблере нет линковки, подключаемые файлы вставляются по месту директивы 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"
Yura_K
Цитата(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 делайте переход на точку входа в программу.
marcinio
Цитата
.inc файлы вставлять в начале main файла, .asm файлы - в конце:

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

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

Который, также как и AVR Studio, бесплатен.
Скачивается с сайта Avrfreaks.
Последний линкер (тоже бесплатный) можно скачать, например, здесь.
defunct
Цитата(=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

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

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

- Настоящему индейцу не западло добавить ключик -s-, чтобы отключить чувствительность IAR AVR ASM к регистру символов smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.