Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Бардак в консерватории. Устраняем :))(+)

Отправлено MBedder 22 апреля 2008 г. 16:10
В ответ на: AStudio и любовь к исскуству (+) отправлено RUAL 22 апреля 2008 г. 15:15

Во-первых - ворнинг этот ни ухом ни рылом не связан с количеством макроаргументов - AVRASM(2) добивает нулем все одинокие db в cseg, и правильно делает - это в лоб описано в мануале:


If the DB directive is given in a Code Segment and the expressionlist contains more than one expression, the expressions are packed so that two bytes are placed in each program memory word. If the expressionlist contains an odd number of expressions, the last expression will be placed in a program memory word of its own, even if the next line in the assemby code contains a DB directive. The unused half of the program word is set to zero. A warning is given, in order to notify the user that an extra zero byte is added to the .DB statement


Во-вторых, располагать строки прямо в макросе - моветон и напрасная трата времени (одна лишняя инструкция - rjmp PrnStr). Располагай все строки после конца исполняемого кода, а если лень самому нули в конец строки ставить - сделай макрос dbz:


.macro dbz
.db @0,0
.endm


dbz "asdfghj"


А длину макроаргументов вычислять в AVRASM нечем, да и незачем


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
к трём прибавьте 5:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru