Цитата(Turion @ Jun 22 2007, 16:03)

Тогда какого хрена в документации приводят такой пример.
Вот это компилится нормально:
Код
unsigned char flag;
void foo()
{
static unsigned char flag1;
while (!flag)
{
asm("IN R0,_A_PIND");
asm("STS flag,R0");
if (flag)
{
flag1 = flag;
flag |= flag1<<1;
}
asm("STS ??flag1,R0");
}
}
если убрать статик, то компилятор переменную размещает в регистре, а не в памяти, ну и как следствие асм вставка найти ее не может.
А для чего вам нужна вставка на асме? CRC считать? дык компилятор не плохо оптимизирует эту процедуру, не ужели для вас критично пяток лишних операторов (хотя не факт что они будут)?