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

Обсуждаем контроллеры компании Atmel.
Ответить
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

shads писал(а):Каким образом? Помоему что LDI A,0 что CLR A суть одно.....
действительно тупанул :facepalm:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Engineer_Keen писал(а):Это не очевидно для компилятора, вот и ругается, ставьте вместо zh const00, и все.
Дык все дело в том, что до выполнения ентой процедуры, Const00 пока не является Const00, т.к. там тоже мусор..... Поэтому в итоге добавил команду с обнулением А.
Реклама
akl
Друг Кота
Сообщения: 4458
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

igor-x писал(а): решил адаптировать измеритель для работы без индикатора..
Извините что без разрешения :))
Нет проблем. :beer:
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

shads писал(а):Дык все дело в том, что до выполнения ентой процедуры, Const00 пока не является Const00, т.к. там тоже мусор..... Поэтому в итоге добавил команду с обнулением А.
Не подумал о такой последовательности. Просто я если использую регистр как 0-ю константу, то обнуляю его в самом начале, сразу после инициализации стека. Там же кстати и константу 0xFF, если нужна: CLR Const00 / MOV ConstFF,ZERO / DEC ConstFF
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

MOV ConstFF,ZERO / DEC ConstFF
SER ConstFF :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

ploop писал(а):SER ConstFF :)
Ненененене!!! Регистры 16-31 экономим! Используем нижнюю половину, так что SER/LDI не катит. Иначе смысл был писать MOV-DEC, если сразу можно LDI ConstFF, 0xFF :)))
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Послушали бы нас сейчас Сишники, подумали бы не весть что.....
(Я имею ввиду чистых сишников (а не универсальных, которым все ни по чем))
Последний раз редактировалось shads Пт май 25, 2012 13:18:59, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Engineer_Keen писал(а):MOV ConstFF,ZERO
CLR работает со всеми РОН, это SER работает только с 16-ю верхними.

Кстати, AVR в плане минимизации не так интересен — у него почти все команды 2 байта выполняются за 1 такт. А вот контроллеры 51-ой серии... у них команды в основном от 1 до 3 байт/тактов :)))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Gudd-Head писал(а):CLR работает со всеми РОН, это SER работает только с 16-ю верхними.
Мне кажется разработчики ассемблера борщнули с количеством команд.
Если SER тоже что и LDI R,255, зачем она? Засрали только список команд..... (кстати и другие есть еще команды, которые просто дублируются).
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Ненененене!!! Регистры 16-31 экономим!
А, ну тады ладно :)
Иначе смысл был писать MOV-DEC, если сразу можно LDI ConstFF, 0xFF
Так не круто! :)))
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Если SER тоже что и LDI R,255, зачем она? Засрали только список команд
У них коды одинаковые. И не только у них - таких команд много. На вскидку с логическими операциями - CBR и SBR аналогичны ANDI и ORI
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

shads писал(а):Мне кажется разработчики ассемблера Если SER тоже что и LDI R,255, зачем она).
Короче писать
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

shads писал(а):Если SER тоже что и LDI R,255, зачем она?
SER на самом деле и есть LDI R,255 — сравните коды команд. А надо их повторять затем, чтобы было проще программировать (меньше писать), чтобы код лучше читался и т.д.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

чтобы было проще программировать
Щаззззз! Чтобы в рекламе написать - "поддержка доХХХ команд!"
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

ILYAUL писал(а):Короче писать
А, ну тады ладно :)

Я же писал, что многим командам не придал значения..... Теперя начну SER-ить
Последний раз редактировалось shads Пт май 25, 2012 13:30:46, всего редактировалось 2 раза.
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

shads писал(а):Мне кажется разработчики ассемблера борщнули с количеством команд.
Если SER тоже что и LDI R,255, зачем она? Засрали только список команд..... (кстати и другие есть еще команды, которые просто дублируются).
Видимо для удобства написания программы.
CLR тоже дубль = EOR Rd,Rd, вся ветка BRxx - это две команды BRBC и BRBS для регистра SREG, зато сразу понятно какое условие.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

ploop писал(а):
Если SER тоже что и LDI R,255, зачем она? Засрали только список команд
У них коды одинаковые. И не только у них - таких команд много. На вскидку с логическими операциями - CBR и SBR аналогичны ANDI и ORI
Но так нагляднее

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

 cbr Flags, 1<<MSB
чем

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

andi Flags,0x7F
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Согласен. Но лично у меня ANDI Flags, 1<<MSB тоже затруднений не вызовет.
Более интересная аналогия с переходами BRxx - не будь лишних команд, приходилось бы задавать константы, или держать в уме SREG
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

ILYAUL писал(а):Но так нагляднее

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

 cbr Flags, 1<<MSB
чем

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

andi Flags,0x7F
А у мене этот вариант, со сдвигами, с непривычки, чето неприжился.

Я гдето надыбал список макросов, и где надо пишу теперь

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

BITSET Flags,MSB
BITRES Flags,MSB
мне так нагляднее.

Единственный недостаток, несколько бит одновременно не установиш. Но я чтото таких ситуаций и не заметил (покрайней мере в последнем проекте на 2Кб флэша).
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

shads писал(а):Единственный недостаток, несколько бит одновременно не установиш.

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

Sbr Flags,1<<MSB|1<<LSB|1<<3
Плиз. А сдвиги Вам считать не надо , компил сам разберётся
Кстати я так обычно записываю и инит регистров переферии , что бы знать , чего это я там нагородил

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

outi	ADCSRA,1<<ADEN|1<<ADIE|1<<ADPS2|1<<ADPS1|1<<ADPS0
Последний раз редактировалось ILYAUL Пт май 25, 2012 13:52:29, всего редактировалось 1 раз.
Ответить

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