Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="motorist82",url="/forum/viewtopic.php?p=3665189#p3665189"]Имеем пятибайтную константу, например

.equ NAME=0xE7E6E5E4E3

Как из неё взять старший байт для загрузки в РОН?[/uquote]
На хорошем ассемблере для AVR это будет:
V = Name#4
Если надо скопировать, скажем, 2 байта, то для 2-х байтной переменной V это будет:
V = Name#4N2
Переменная V может быть и RON, и SRAM, и EEPROM.

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3704873#p3704873"]ARV, проще, но менее универсальна. Она применима только в случае, если во всем коде есть только один длительный расчет, способный занять ресурсы CPU на длительное время. Если же необходимость в таких расчетах возникает асинхронно, то приходится реализовывать мультизадачность. А кооперативная мультизадачность, при всех ее недостатках, экономит и память, и ресурсы CPU, в сравнении с мультизадачностью по таймеру.[/uquote]
Сомнительно насчёт универсальности.
Во-первых, если уж требуются длительные расчёты, плохо стыкующиеся с основной программой, для них можно поставить отдельный МК, он стоит копейки.
Во-вторых, в длительной задаче можно в удобном месте сделать «окна» для программной обработки прерываний.
МК последовательно выполняет задачи – это, как писали, в 100500 раз упрощает разработку и отладку, что очень существенно.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

AQ29 писал(а):На хорошем ассемблере для AVR это будет:
V = Name#4
прошу вас, не томите, дайте ссылку на хороший ассемблер! :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

В "чистом ассемблере" ПЕРЕМЕННАЯ?
:dont_know:
Разве что если разговор вести о работе препроцессора...
ДЫК...
там вроде есть средства полегче (avrasm2)
40001917A_AVR Assembler_User Guides.pdf
(312.32 КБ) 874 скачивания
стр.33....
:roll:
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="ARV",url="/forum/viewtopic.php?p=3720283#p3720283"]прошу вас, не томите, дайте ссылку на хороший ассемблер! :)))[/uquote]
С которым я сейчас разбираюсь - его нет в общем доступе. Пока нет.
Я с АВР-студией не работал, странно, что в ней нет таких команд. Даже в старенькой бесплатной программе АБ есть возможность просто обратиться к любому байту выше начального адреса переменной.
Думаю, это сделать несложно, а удобно в работе.
[uquote="BOB51",url="/forum/viewtopic.php?p=3720415#p3720415"]В "чистом ассемблере" ПЕРЕМЕННАЯ?
:dont_know:
Разве что если разговор вести о работе препроцессора...
ДЫК...
там вроде есть средства полегче (avrasm2)
40001917A_AVR Assembler_User Guides.pdf
стр.33....
:roll:[/uquote]
С переменными работать намного удобней, а то, что это «чистый» или «нечистый» ассемблер – неважно.
Переменные – не единственный плюс хорошего ассемблера.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

AQ29 писал(а):С которым я сейчас разбираюсь - его нет в общем доступе. Пока нет.
интрига! :))) любопытство накалено до предела :)))
думаю, в общем доступе его и не будет никогда - кому он нужен-то будет когда-то "потом"?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

То, что имеется в наличии (avrasm2) вполне достаточно для качественной работы.
Остальное - удел ЯВУ.
8)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

BOB51 писал(а):вполне достаточно для качественной работы
я остаюсь при мнении, что avrasm2 - очень убогий ассемблер, которому крайне далеко до звания "приличного". я уже писал, что gnu-as, точнее, в контексте нашей темы, avr-as на самом деле представляет собой "приличный" ассемблер. как с моего дилетантского взгляда, так практически лучший из.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Кто к чему привык (или с чего начинал).
:beer:
Да и область применения - абсолютно самостоятельно или в качестве комплектной единицы (да еще и чаще используемая).
До возможностей keil конечно далековато, однако вполне качественный материал.
8)
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="ARV",url="/forum/viewtopic.php?p=3722735#p3722735"]
AQ29 писал(а):С которым я сейчас разбираюсь - его нет в общем доступе. Пока нет.
интрига! :))) любопытство накалено до предела :)))
думаю, в общем доступе его и не будет никогда - кому он нужен-то будет когда-то "потом"?![/uquote]

Разных ассемблеров не знаю, но, судя по примерам здесь, прогресса в развитии ассемблера не заметил.
Где-то к концу года что-то проявится.
Если представляет интерес, могу вам сообщить.

[uquote="BOB51",url="/forum/viewtopic.php?p=3722771#p3722771"]То, что имеется в наличии (avrasm2) вполне достаточно для качественной работы.
Остальное - удел ЯВУ.
8)[/uquote]
Если исходить из требований прошлого века, может, и достаточно.
Сейчас уже хочется чего-нибудь получше.
На мой взгляд, у хорошего ассемблера должно быть следующее.
1 Глобальные и локальные переменные (RON, SRAM, EEPROM, RVV, константы, биты). Локальные переменные видимостью модуля, процедуры или макроса. Размерность переменных – 8 байт.
2 Команды условий: If, While, Until.
3 Встроенные функции (временные задержки, матфункции и т.д.).
Для матфункции должно быть указано формат переменной, диапазон переменной, точность, время выполнения в циклах. Должен быть выбор точности. Скажем, вызов десятичного логарифма в виде: Log10_2(x) / 0,5, где 2 – это двухбайтная переменная, 0,5 – гарантированная точность расчёта логарифма в указанном диапазоне.
4 Современный сервис: свертки подпрограмм и условий, раскраска команд и переменных, подсказки и т.д.
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это уже не ассемблер, а разновидность ЯВУ.
Без права на самостоятельное распределение ресурсов и свободу применяемых приемов.
:sleep:
Друг Кота
Аватара пользователя
Сообщения: 25863
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Да, какая то рандомная смесь из хотелок на уровне сущностей и сервисов. И полное непонимание зачем люди пишут на АСМе.
:tea:
Сервисы с колапсайдерами и раскрасками давно уже используются в средах и они никакого отношения ни к АСМу, ни к Си не имеют.
Команды в АСМе определяются наличием инструкций в платформе МК, а не АСМом как таковым.
Функции о которых шла речь так же отсутствуют и в АСМе и в Си. Они есть в библиотеках. Но библиотеки можно написать на любом языке. Это определяется опытом работы, а не выбранным языком.
Последний раз редактировалось КРАМ Чт фев 27, 2020 20:04:02, всего редактировалось 1 раз.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

AQ29 писал(а):Современный сервис: свертки подпрограмм и условий, раскраска команд и переменных, подсказки и т.д.
так это, вроде бы, никакого отношения к ассемблеру не имеет - это имеет отношение к IDE или редактору кода.
AQ29 писал(а):На мой взгляд, у хорошего ассемблера должно быть следующее.
согласно ваших критериев, хороший, просто отличный "ассемблер" называется... Си :))) он даже лучше всего того, что вы написали!
AQ29 писал(а):Разных ассемблеров не знаю, но
это правильно: любой дурак сможет сначала узнать многое, а потом сделать лучше всего этого. настоящий гений сразу делает лучше всех, изначально не зная ничего :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15792
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

ARV
То "монстро" на адуринку смахивает, только разукрашенную и с подсветкой...
:dont_know:
Друг Кота
Аватара пользователя
Сообщения: 25863
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Товарисч AQ29 просто в принципе не понимает что такое ассемблер и как он работает. Вот и пишет рандомный бред.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

1 Глобальные и локальные переменные (RON, SRAM, EEPROM, RVV, константы, биты). Локальные переменные видимостью модуля, процедуры или макроса. Размерность переменных – 8 байт.
Всё это есть и с самого начала. Просто поймите что в ассемблере нет такого понятия как переменная - процессор и инструкции оперируют только адресами в памяти, только не говорите что в ассемблере нет директив распределения памяти по адресам и нет меток... биты вообще больное место - не всегда есть вообще аппаратная реализация побитового доступа, поэтому битовый доступ решается при помощи макросов в конкретных условиях конкретного проекта.
2 Команды условий: If, While, Until.
Если ввести такие сущности в ассемблер... то это будут не более чем предопределённые макросы. Не проще ли просто подключить заранее заготовленный файл с этими макроопределениями? Ой, или его вам кто-то должен дать?

Чесно говоря, чего не хватает в нынешнем ассемблере - так это более мощной и менее ограниченной системы макроподстановок. Сейчас это выглядит как набор костылей, и понятное дело почему...
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18788
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Alexeyslav писал(а):чего не хватает в нынешнем ассемблере - так это более мощной и менее ограниченной системы макроподстановок.
попробуйте gnu-as, точнее avr-as - макросы практически те же, что и в masm или tasm
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

[uquote="AQ29",url="/forum/viewtopic.php?p=3798003#p3798003"]2 Команды условий: If, While, Until.[/uquote]
AVR-asm-мом занимаюсь относительно не долго. Сначала меня обескуражило отсутствие таких явных, как if-then-else...
Уверяю, эти неудобства временны и проходящи. На данный момент я прекрасно без низ обхожусь и не настальгирую по ним.

Причём не трудно заметить, что популяризация, упрощение, "дружелюбность к пользователю" вызывают куда более непонимание и проблемы. Иной раз хочу посмотреть, как с каким-нибудь датчиком или дисплеем люди работают, так весь интернет забит безответными вопросами ардуинщиков.
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="BOB51",url="/forum/viewtopic.php?p=3798010#p3798010"]Это уже не ассемблер, а разновидность ЯВУ.
Без права на самостоятельное распределение ресурсов и свободу применяемых приемов.
:sleep:[/uquote]
Можно назвать и вариантом ЯВУ. Дело не в названии, а в удобстве пользования.
Откуда берётся запрет «на самостоятельное распределение ресурсов»?
В чём ограничение «свободы применяемых приёмов»?
Фактически, у программы есть все возможности ассемблера.
[uquote="КРАМ",url="/forum/viewtopic.php?p=3798013#p3798013"]Да, какая то рандомная смесь из хотелок на уровне сущностей и сервисов. И полное непонимание зачем люди пишут на АСМе.
:tea:
Команды в АСМе определяются наличием инструкций в платформе МК, а не АСМом как таковым.
Функции о которых шла речь так же отсутствуют и в АСМе и в Си. Они есть в библиотеках. Но библиотеки можно написать на любом языке. Это определяется опытом работы, а не выбранным языком.[/uquote]
Люди пишут на Асме, чтобы решить поставленную задачу. На хорошем Асме писать хорошо, на плохом – плохо.
Библиотека или встроенная функция - не принципиально.
Основной смысл – не изобретать велосипед, а использовать готовую функцию.
Думаю, встроенную функцию вызвать проще, соответственно, удобней.

[uquote="ARV",url="/forum/viewtopic.php?p=3798018#p3798018"]так это, вроде бы, никакого отношения к ассемблеру не имеет - это имеет отношение к IDE или редактору кода.[/uquote]
Это общее пожелание к языку, а не к конкретно к ассемблеру.
[uquote="ARV",url="/forum/viewtopic.php?p=3798018#p3798018"]согласно ваших критериев, хороший, просто отличный "ассемблер" называется... Си :))) он даже лучше всего того, что вы написали![/uquote]
В СИ приходится делать вставки из ассемблера - это вроде как костыли. А костыли свидетельствуют об инвалидности программы, здоровому костыли не нужны.
[uquote="ARV",url="/forum/viewtopic.php?p=3798018#p3798018"]это правильно: любой дурак сможет сначала узнать многое, а потом сделать лучше всего этого. настоящий гений сразу делает лучше всех, изначально не зная ничего :)))[/uquote]
Напоминает высказывание Эйнштейна: «Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно — он-то и делает открытие.»
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Уважаемый AQ29, я вот только не пойму мотив Ваших претензий к AVR ASM-у. Или у Вас есть какая то прорывная идея (судя по высказыванию):
[uquote="AQ29",url="/forum/viewtopic.php?p=3803683#p3803683"]Напоминает высказывание Эйнштейна: «Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно — он-то и делает открытие.»[/uquote]
Грызет канифоль
Сообщения: 264
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3801741#p3801741"]Всё это есть и с самого начала. Просто поймите что в ассемблере нет такого понятия как переменная - процессор и инструкции оперируют только адресами в памяти, только не говорите что в ассемблере нет директив распределения памяти по адресам и нет меток... биты вообще больное место - не всегда есть вообще аппаратная реализация побитового доступа, поэтому битовый доступ решается при помощи макросов в конкретных условиях конкретного проекта.[/uquote]
А что, существует какой-то запрет на применение переменных в ассемблере? Про такой запрет я, действительно, ничего не слышал.
В хорошем ассемблере биты – обычные переменные, особых проблем нет.
[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3801741#p3801741"]Команды условий: If, While, Until. [/quote]
Если ввести такие сущности в ассемблер... то это будут не более чем предопределённые макросы. Не проще ли просто подключить заранее заготовленный файл с этими макроопределениями? Ой, или его вам кто-то должен дать?[/uquote]
Что представляет собой заранее заготовленный файл с этими макроопределениями? Он стандартный для всех задач, или его надо писать под конкретную задачу?
[uquote="Alexeyslav",url="/forum/viewtopic.php?p=3801741#p3801741"]Чесно говоря, чего не хватает в нынешнем ассемблере - так это более мощной и менее ограниченной системы макроподстановок. Сейчас это выглядит как набор костылей, и понятное дело почему...[/uquote]
Я уже писал – костыли свидетельствуют об инвалидности программы.
На «здоровой» программе писать лучше.
Ответить

Вернуться в «AVR»