действительно тупанулshads писал(а):Каким образом? Помоему что LDI A,0 что CLR A суть одно.....
Ассемблер (ASM) для AVR в вопросах и ответах
- Реклама
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Дык все дело в том, что до выполнения ентой процедуры, Const00 пока не является Const00, т.к. там тоже мусор..... Поэтому в итоге добавил команду с обнулением А.Engineer_Keen писал(а):Это не очевидно для компилятора, вот и ругается, ставьте вместо zh const00, и все.
Нет проблем.igor-x писал(а): решил адаптировать измеритель для работы без индикатора..
Извините что без разрешения
Не подумал о такой последовательности. Просто я если использую регистр как 0-ю константу, то обнуляю его в самом начале, сразу после инициализации стека. Там же кстати и константу 0xFF, если нужна: CLR Const00 / MOV ConstFF,ZERO / DEC ConstFFshads писал(а):Дык все дело в том, что до выполнения ентой процедуры, Const00 пока не является Const00, т.к. там тоже мусор..... Поэтому в итоге добавил команду с обнулением А.
- Реклама
Ненененене!!! Регистры 16-31 экономим! Используем нижнюю половину, так что SER/LDI не катит. Иначе смысл был писать MOV-DEC, если сразу можно LDI ConstFF, 0xFFploop писал(а):SER ConstFF
CLR работает со всеми РОН, это SER работает только с 16-ю верхними.Engineer_Keen писал(а):MOV ConstFF,ZERO
Кстати, AVR в плане минимизации не так интересен — у него почти все команды 2 байта выполняются за 1 такт. А вот контроллеры 51-ой серии... у них команды в основном от 1 до 3 байт/тактов
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Мне кажется разработчики ассемблера борщнули с количеством команд.Gudd-Head писал(а):CLR работает со всеми РОН, это SER работает только с 16-ю верхними.
Если SER тоже что и LDI R,255, зачем она? Засрали только список команд..... (кстати и другие есть еще команды, которые просто дублируются).
А, ну тады ладноНенененене!!! Регистры 16-31 экономим!
Так не круто!Иначе смысл был писать MOV-DEC, если сразу можно LDI ConstFF, 0xFF
У них коды одинаковые. И не только у них - таких команд много. На вскидку с логическими операциями - CBR и SBR аналогичны ANDI и ORIЕсли SER тоже что и LDI R,255, зачем она? Засрали только список команд
Короче писатьshads писал(а):Мне кажется разработчики ассемблера Если SER тоже что и LDI R,255, зачем она).
SER на самом деле и есть LDI R,255 — сравните коды команд. А надо их повторять затем, чтобы было проще программировать (меньше писать), чтобы код лучше читался и т.д.shads писал(а):Если SER тоже что и LDI R,255, зачем она?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Щаззззз! Чтобы в рекламе написать - "поддержка доХХХ команд!"чтобы было проще программировать
Видимо для удобства написания программы.shads писал(а):Мне кажется разработчики ассемблера борщнули с количеством команд.
Если SER тоже что и LDI R,255, зачем она? Засрали только список команд..... (кстати и другие есть еще команды, которые просто дублируются).
CLR тоже дубль = EOR Rd,Rd, вся ветка BRxx - это две команды BRBC и BRBS для регистра SREG, зато сразу понятно какое условие.
Но так нагляднееploop писал(а):У них коды одинаковые. И не только у них - таких команд много. На вскидку с логическими операциями - CBR и SBR аналогичны ANDI и ORIЕсли SER тоже что и LDI R,255, зачем она? Засрали только список команд
Код: Выделить всё
cbr Flags, 1<<MSBКод: Выделить всё
andi Flags,0x7FСогласен. Но лично у меня ANDI Flags, 1<<MSB тоже затруднений не вызовет.
Более интересная аналогия с переходами BRxx - не будь лишних команд, приходилось бы задавать константы, или держать в уме SREG
Более интересная аналогия с переходами BRxx - не будь лишних команд, приходилось бы задавать константы, или держать в уме SREG
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
А у мене этот вариант, со сдвигами, с непривычки, чето неприжился.ILYAUL писал(а):Но так нагляднеечемКод: Выделить всё
cbr Flags, 1<<MSBКод: Выделить всё
andi Flags,0x7F
Я гдето надыбал список макросов, и где надо пишу теперь
Код: Выделить всё
BITSET Flags,MSB
BITRES Flags,MSBЕдинственный недостаток, несколько бит одновременно не установиш. Но я чтото таких ситуаций и не заметил (покрайней мере в последнем проекте на 2Кб флэша).
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 раз.



