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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Предочистка используемых программой регистров РОН и ОЗУ это обязательная стандартная процедура - но её исполнение зависит от конкретных требований программы.
Кроме того требуется привести в начальное состояние и некоторые из регистров спец функций (зависит от аппаратной начинки кристалла и статуса содержимого как при включении питания, так и при всех видах перезапуска устройства).
8)
Аватара пользователя
Starichok51
Модератор
Сообщения: 19046
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

shonty писал(а):Это если не обращаться к данным во флэше
тут я тоже делаю хитро.
во флеши у меня тоже есть данные - небольшие таблицы и несколько строковых данных (имена параметров для вывода их на экран). все эти данные у меня находятся в начале флеши, чтобы для доступа к ним ZH тоже был равен нулю. поэтому и для ОЗУ и для данных во флеши мне достаточно загрузить адрес только в ZL.
BOB51 писал(а):Нуль можно и в варианте константы определить.
константу ты в команду СРС не поставишь.
shonty писал(а):все регистры в ноль
нет в этом необходимости, я делаю очистку только тех регистров, которые на старте программы долны быть равны нулю. а их у меня обычно не так уж много.
BOB51 писал(а):Предочистка используемых программой регистров РОН и ОЗУ это обязательная стандартная процедура
я выше только что сказал, что это и нахер не нужно делать. очистить только то, что должно быть "чистым".
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

[uquote="BOB51",url="/forum/viewtopic.php?p=4659579#p4659579"]Это хорошо, если используется модель АВР.
Но ведь возможно и иное переназначение регистров файла под наиболее удобную модель распределения регистров...
это все таки "чистый ассемблер".
К примеру тот же "быстрый стек" под отдельные подпрограммы в младшей части регистрового банка...
:roll:[/uquote]
Чистых ассемблеров не бывает, все прибиты гвоздями к архитектуре.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

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

Сообщение BOB51 »

Имелась ввиду разница между GNU-adsembler( :oops: )под GCC и avrasm без Си
8)
Касательно архитектуры - ядро то остаётся АВРкино, но стиль использования регистров регистрового файла может заметно отличаться при разных базовых моделях.
У нас ведь не один аккумулятор как "по классике", а всё из имеющихся с полным функционалом. Да ещё и столько же " чуток ограниченных в возможностях применения" - именно в том и особенность МК, которой очень редко пользуются.
(Или вообще не замечают).
:wink:
Насчёт CPC... Зависит от контекста - по функционалу у
СРС Rd, Rd имеем rd-rr-c но Rd сохранён неизменным
И
SBCI Rd, k при Rd=rd-k-c, где к =0-255, но Rd будет изменён по результату. Да сама команда работает только с R31-R16...
При том флаги установятся одинаково.
:roll:
Аватара пользователя
Starichok51
Модератор
Сообщения: 19046
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

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

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

Сообщение BOB51 »

Есть то и CPI Rd, k , но в ней не учитывается флаг C .
Собственно аналогия CP Rd, Rr и CPI Rd, k... Ошибка исправлена. :wink:
CPC дополнительно учитывает предыдущее состояние флага С - ежли таковое критично, то ближайшей неполной аналогией можно считать SBCI при учете того, что она и содержимое регистра изменить может, если С=1 при константе =0, а СРС только по флагам пройдется.
:roll:
Интересненько однако...

Код: Выделить всё

LDI R16,0
REPS:
SEC
SBCI R16,0
RJMP REPS
... и что будет?... надо посмотрямс из спортивна интересу...
:?

Ага, получилось R16 = 0хFF при С=1
а последующий шаг с 0xFF в R16 дал R16 = 0xFE и С = 0...
:roll:
Последний раз редактировалось BOB51 Пт дек 13, 2024 16:54:16, всего редактировалось 1 раз.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

[uquote="BOB51",url="/forum/viewtopic.php?p=4659680#p4659680"]Имелась ввиду разница между GNU-adsembler( :oops: )под GCC и avrasm без Си
8)
Касательно архитектуры - ядро то остаётся АВРкино, но стиль использования регистров регистрового файла может заметно отличаться при разных базовых моделях.[/uquote]
я и говорю - не надо отличий без необходимости от того, что принято в GCC. если вы выработаете привычку делать свои ассемблерные штуки по соглашениям, принятым в GCC, вам потом будет элементарно оформить их в нужном стиле - чисто косметические правки, алгоритм не будет затронут, - и использовать их в проекте на Си. и другим будет полезнее. какой регистр вы задефайните под константу НОЛЬ - принципиально вам разницы нет, но для "совместимости" лучше выбрать регистр R1, как в GCC. А R0, если я не ошибаюсь, применять как временный операнд, т.е. регистр, значение которого в любой момент может быть испорчено без последствий. ну и остальное тоже... я могу напутать, поэтому лучше изучить соответствующие доки на предмет "кошерного" назначения регистров.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

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

Сообщение BOB51 »

Так это вопрос совместимости с GCC - если в таком смысле, конечно удобнее для транзитных работ по стандартным схемам с использованием одного аккумулятора. Да и фокусы со стеком GCC явно не допускает.
А вот в прикладном плане для ассемблерных проектов это не факт...
Если только в самом GCC подобный подход не закладывался.
:dont_know:
К примеру можно запустить несколько абсолютно автономно вертящихся задач на основе прерываний и аппаратных ресурсов. При условии, что у основной программы доступ ко всем псевдоавтономным через массив данных и флаги в ОЗУ.
К примеру контроллер динамической индикациии кнопок на одном из таймеров и приемепередатчик плюс программа обработки.
Понятно, что все выполняется последовательно во времени через единое АЛУ, но каждый "самостоятельный" модуль имеет свой независимый набор регистр-аккумуляторов, а общее ОЗУ уже как бы в режиме ПДП для этих модулей (через механизм флагов запросов/квитирования).
Собственно как вариант использования ресурсов вполне возможно...
Или несколько критичных регистров при прерывании хранить на в обычном стеке
push/pop, а использовать альтернативный блок регистров с помощью movw...
:roll:
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Вам надо сделать словарик вашего слэнга, потому что понять вас выше моих сил... Какие стеки, какие аккумуляторы, почему индивидуальные?! Чем меньше извращений, тем проще, удобнее и понятнее, а если совместимо с чем-то другим - вдвойне хорошо.

Но дело, конечно, ваше... Avrasm настолько убогое говнище, что я вообще не понимаю, зачем его использовать, если есть avr-as, часть тулчейна avr-gcc. Даже древний 51-й ассемблер на пару порядков удобнее и мощнее... Гнутый асм ничем не хуже, уверяю вас!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

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

Сообщение BOB51 »

Это точно... (насчёт слэнга)...
Увы... Порой в том проблемы - так я ж и не возражаю...
8)
Относительно компилятора...
Каждый надо заново прорабатывать.
По традиции (и начальной широкой доступности в любительской практике) базовыми были avrasm от аврстудии, c51asm от той же атмел и mpasm от микрощипьего мплаба - вот я из них и слепил "нечто усредненное" по употреблению.
Это правда не исключает и менее распространённых на сегодня, но "устаревших" для "старой классики" (580/Z80).
А вот дальше уже таки сложнее - время своё берёт...
(со склерозом в компании)
:beer:
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

ARV писал(а):Но дело, конечно, ваше... Avrasm настолько убогое говнище, что я вообще не понимаю, зачем его использовать, если есть avr-as, часть тулчейна avr-gcc.
Дело привычки. Да и мотивации особой нет пересаживаться на что-то другое :dont_know:

А потом.. мнений много.. но все субъективны :dont_know:
Аватара пользователя
Starichok51
Модератор
Сообщения: 19046
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

BOB51, а ты из спортивна интересу попробуй в исходнике написать CPI Rd, Rr. и посмотри, что тебе на это скажет компилятор.
это будет гораздо интереснее, чем проверять работу SBCI...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1389
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

[uquote="BOB51",url="/forum/viewtopic.php?p=4659801#p4659801"]Это точно... (насчёт слэнга)...
Увы... Порой в том проблемы - так я ж и не возражаю...
8)[/uquote]
И не только. Много букв. Я вообще пролистываю твои сообщения, считая старческим жужжанием. Извини.)
Аватара пользователя
ДядяВован
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс окт 25, 2020 22:13:25
Откуда: Смоленск

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

Сообщение ДядяВован »

Starichok51 писал(а):что тебе на это скажет компилятор
Компилятор, которым я пользуюсь, говорит следующее:

Error ==> cpi r16, r17
007: Undefined constant, variable, label or device (R17)!

Error ==> cpi r1, r17
017: Register value (1) out of range (R16..R31)!
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4659885#p4659885"]BOB51, а ты из спортивна интересу попробуй в исходнике написать CPI Rd, Rr. и посмотри, что тебе на это скажет компилятор.
это будет гораздо интереснее, чем проверять работу SBCI...[/uquote]

А зачем делать то, что в систему команд не заложено ?...
:shock:
Команды CPI Rd, Rr в системе команд AVR не существует - какой смысл ее обсуждать то?
AVR-InstructionSet-Manual-DS40002198B.pdf
(1.18 МБ) 84 скачивания
:dont_know:
Другое дело макрос с такими параметрами создать и использовать - это не возбраняется.
А порой даже весьма эффективно (особо с учетом перенаименования регистров).
:hunger:

OKF
Я спросил - интересно кому - выложу "на посмотреть", не интересно - удаляюсь в свою котуинку (тем более там это все уже было).
Смысла то повторяться никакого нету - каждый делает то, что дает необходимый ему результат с теми ресурсами, которые ему доступны.
:beer:
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4659670#p4659670"]
shonty писал(а):все регистры в ноль
нет в этом необходимости, я делаю очистку только тех регистров, которые на старте программы долны быть равны нулю. а их у меня обычно не так уж много.[/uquote] Да так и есть.. Очистка регистров, рАвно как и очистка ОЗУ - один из необязательных "ритуалов" ))

Но я обращаюсь к этому коду, когда забываю как работать с регистрами как с памятью. :)))

По поводу "слэнга". Так вроде мы все тут художники свободные.. Кому-то пейзажи, кому-то натюрморты.. ну а кто-то экзотическими направлениями балуется.. Что ж с того :dont_know:

:beer:
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

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

Сообщение Just_Fluffy »

ARV писал(а):Avrasm настолько убогое говнище, что я вообще не понимаю, зачем его использовать, если есть avr-as, часть тулчейна avr-gcc. ... Гнутый асм ничем не хуже, уверяю вас!
Роман, простите мою глупость, но как могут отличаться ассемблеры для одной платформы? Система ж команд одинаковая... Или вы имеете ввиду мощность и плюшки препроцессора?
(про себя скажу, что писала на чистом асме в четвертой авр-студии, когда изучала архитектуру АВРок. Потом уже седьмая студия и ассемблерные вставки в Си. На голом асме давно не пишу.)
Белая и Пушистая
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Язык - в смысле системы команд не отличается.
А вот компиляторы по своему правописанию и возможностям могут весьма сильно отличаться даже без всякого "отношения к Си"...
По крайней мере я с тремя вариантами для 51й весьма плотненько занимался - от AD2500, встроенный в mcu8051ide и c51asm - исходники даже в простых проектах могут заметно отличаться для потребления каждого из них.
:(
OKF
Это не хвост, это антенна
Сообщения: 1389
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

Just_Fluffy, извиняюсь что встряю. Ассемблеры для команд одинаковы, возможности (удобства) разные. Кроме команд есть ещё и директивы, есть ещё и макросредства. Я вам пример приведу, что бы было понятно. У меня был проект на z80. Дожил до 2012-го года (с 1994-го). Изначально транслировал m80 от небезизвестного Microsoft(с). 81-го года выпуска! Но это же стыдоба в наше время использовать ТАКОЕ старьё! Да ладно бы под CP/M. Эмуляторов много. Но из трансляторов ничего более современного не нашел. То там затык, то там не может, не хватает средств... Правда, исходник был не мал, 36000 строк. В итоге, подёргался и успокоился.
Я к тому что ассемблеры разные и возможности тоже.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Если уж быть корректным то не "ассемблеры",
а компиляторы ассемблера...
:roll:
Ответить

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