Цитата(Potter @ Jan 9 2007, 23:15)

Собствено в помощь людям которым очень нужно написать асемдлерную функцию в сишном проекте(в IAR-е).
В ИАРе все подробно расписано в документации. И делается как и положено в "больших" компиляторах с раздельной компиляцией и линковкой. А люди хотят перетащить это в CV, у которого нет понятия модулей, объектных файлов, линковки. Он все файлы склеивает в один с помощью #include, компилирует эту "колбасу", получает один большой ассемблерный файл на весь проект из которого при помощи avrasm (или avrasm32 - не помню, давно смотрел) получает сразу .hex прошивки. При этом в документации создание кусков на асме описано весьма скудно, часть #pragma не описана вообще - о них можно догадаться только просматривая прилагаемые исходники "библиолтек".
В CV асм-вставки делаются так (в свое время полдня убил пока разобрался):
Код
#pragma asm_function+
void TX_Putchar ( char TX_byte) {
#asm
LD R16,Y+ ;// first parameter (TX_byte) passed in [Y]
RJMP TX_PUTCHAR
#endasm
}
unsigned int Get_Serial(void) {
#asm asm_function+
RCALL GET_SERIAL
MOV R30,R16
MOV R31,R17 ;// return unsigned int in R30:R31
RET
#endasm
}
#pragma asm_function-
Про то, как передаются параметры и возвращаются значения было описание в документации.