Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 16.08.2011, 20:14  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Вызов "внешних" подпрограмм (ассемблер)

Доброго времени, участникам форума!
В процессе разработки устройств с применением МК (AVR от Atmel'а) появилась идея написания собственной библиотеки подпрограмм. (программы пишу на ассемблере в AVR Studio)
В моем понимании данная библиотека должна представлять собой набор тематических файлов. Например математической обработки:сложения, вычитания, умножения, деления многобайтных чисел и т.п.
До настоящего времени, специфическую обработку делал в файле с включением в нужном месте через конструкцию .include "bla_bla_bla.asm"
Но это жутко неудобно - при большом количестве подпрограмм, появляется такое же количество файлов.
Прошу помощи зала\гуру в том как можно организовать, в рамках AVR Studio, вызов одной из подпрограмм находящейся в файле с несколькими подпрограммами?
Знаю, что нечто подобное реализовано в IAR.
Убедительная просьба к уважаемой аудитории не советовать писать на С - не хочу быть участником и провокатором очередного холивара. На данный момент времени мой выбор ASM!
Заранее признателен, Александр.
Реклама:
Aleksashka1 вне форума  
Сказали "Спасибо" Aleksashka1
warel (28.06.2019)
Непрочитано 16.08.2011, 20:41  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

Ну если выбор АСМ - то посмотрите Алгоритм Билдер. Там такой проблемы вообще нет, в заголовке прописываете инклюд и потом обращаетесь к нему как к обычной подпрограмме а ненужные делаете скрытыми. Да и работать в нем удобней
niXto вне форума  
Сказали "Спасибо" niXto
warel (28.06.2019)
Непрочитано 16.08.2011, 20:46  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

Смотрел и даже неоднократно работал. Есть в нем (билдере) один неудобный момент - некоторое число операций проиходят через R16. И, например, там где можно бы просто отослать данные, они идут не самым коротким путем.
Aleksashka1 вне форума  
Сказали "Спасибо" Aleksashka1
warel (28.06.2019)
Непрочитано 16.08.2011, 21:18  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

Там, где можно просто отослать данные - они идут так как прописано. А вот если например грузить константу непосредственно в порт или в младшие регистры - билдер оформит ее через 16-й регистр. Если же загрузить константу например в 17-й и этот регистр в порт - 16-й НИкогда не изменится... Возможно вы работали в старых версиях Билдера?

А еще можно сравнивать например ячейки ОЗУ. Билдер сделает это через 16 и 17 наикратчайшим способом
niXto вне форума  
Сказали "Спасибо" niXto
warel (28.06.2019)
Непрочитано 16.08.2011, 21:28  
_guardianangel
Почётный гражданин KAZUS.RU
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

Асм от студии немного убог. Особенно в плане прицепления библиотек. Можно реализовать все в виде одного файла с подпрограммами и каждую подпрограмму заключить в .ifdef ‹procedure name› code .endif. И в основном файли (либо в спецально созданном для дефайнов) дефайнить требуемые подпрограммы. Тогда будет подключен один файл библиотека и в бинарь пойдут только затребованные подпрограммы.
_guardianangel вне форума  
Сказали "Спасибо" _guardianangel
warel (28.06.2019)
Непрочитано 16.08.2011, 22:45  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

to niXto, юзал билдер года три назад.
to guardianangel, моск упорно пробует переварить Ваши слова
Aleksashka1 вне форума  
Сказали "Спасибо" Aleksashka1
warel (28.06.2019)
Непрочитано 17.08.2011, 08:59  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

Сообщение от Aleksashka1 Посмотреть сообщение
guardianangel, моск упорно пробует переварить Ваши слова
Он видимо пытается сказать про макросы.
Someone вне форума  
Сказали "Спасибо" Someone
warel (28.06.2019)
Непрочитано 17.08.2011, 10:39  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,801
Сказал спасибо: 2,913
Сказали Спасибо 3,123 раз(а) в 2,113 сообщении(ях)
ForcePoint на пути к лучшему
Лампочка Вот так.

main.asm
-------------------------------------
.cseg
.org 0h
rjmp start
.org XXXh
.include "smth.inc"
start:
‹иниц. стека и пр.›
mov R16,0x1
mov R17,0x2
rcall smth
out PORTB,R16
stop:
rjmp stop
-------------------------------------

smth.inc
-------------------------------------
smth:
add R16,R17
ret
-------------------------------------
ForcePoint вне форума  
Эти 2 пользователя(ей) сказали Спасибо ForcePoint за это сообщение:
Aleksashka1 (17.08.2011), warel (28.06.2019)
Непрочитано 17.08.2011, 10:55  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

я бы сказал, что речь идет о директивах условной компиляции.
http://lord-n.narod.ru/download/book..._C/10/1005.htm
__________________
warez
urry вне форума  
Сказали "Спасибо" urry
warel (28.06.2019)
Непрочитано 17.08.2011, 19:04  
Aleksashka1
Прописка
 
Регистрация: 25.10.2008
Сообщений: 125
Сказал спасибо: 1
Сказали Спасибо 36 раз(а) в 26 сообщении(ях)
Aleksashka1 на пути к лучшему
По умолчанию Re: Вызов "внешних" подпрограмм (ассемблер)

ForcePoint, сделал как Вы показали - работает. Большое человеческое спасибо
Aleksashka1 вне форума  
Сказали "Спасибо" Aleksashka1
warel (28.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 08:57.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot