Цитата(delamoure @ Dec 5 2008, 01:25)

В CodeVision ставишь себе pragma savereg- и - вперед.
В IAR буду разбираться, пробовать. Настал момент смены компилятора. С переходом на CodeVision2 старые проекты без переработок не компилируются.
А в IAR и pragma никакая не нужна.
Просто создаёшь отдельный файл с расширением ASM, пишешь в нём свою прогу, с синтаксисом ASM, и подключаешь его к проекту.
Ключевые слова ассемблера IAR не критично отличаются от стандартного набора. Я бы даже сказал, что он "более стандартен", чем ассемблер AVR Studio. Есть доки. В том числе и дока по переходу со студии на IAR ASM. К слову сказать документ простой, так как различий практически нет. Если есть какие вопросы - задавай. Много кто ответит.
Вот попытался резануть кусочек для примера:

Код
PUBLIC crc8
#define crc r10
#define data485 r16
RSEG CODE
// Расчёт CRC
// r10 - crc485, 16 - data, портятся r17,r18,r19
crc8:
ldi r17,8
// mov r12,data485
ldi r18,0x18
cCRC8:
mov r19,crc
eor r19,data485
lsr r19 // Сдвинули бит в С
brcc nCRC8
eor crc,r18
nCRC8:
ror crc
lsr data485
dec r17
brne cCRC8
ret
END
Соответственно в Си проге я её могу вызвать следующим образом
Код
__regvar __no_init uint8_t crc @10;
....
crc8(ADDR_DEFAULT); // Подсчитать crc
Может это и не характерный пример. Дело в том, что это кусок вырезанный из бутлоадера для меги 8.
Для уменьшения размера кода пришлось запретить компилятору использовать несколько регистров (в том числе R10 как вы видите) и разместить там переменные, обращение к которым является найболее частым.
В результате в 2к влез бутлоадер с WakeUp протоколом с шифрованием 128 битным ключём. С выдачей полной информации по кристаллу, изделию, фирмваре и хардваре. Ну и некоторый другой сервис.
Пришлось дешифрацию и некоторые распространённые процедуры (типа crc) написать на ASM.
Очень доволен результатом.