Hallo,
P.S.: Na izaseba, jetzt kommt der Sport
So ein Käse,
da denkt man, man hat was konstruktives vollbracht, und dann so ein Käse.
Das liegt wahrscheinlich daran, daß ich keine Zielhardware z.Z. habe und alles mehr oder weniger zusammenklicken muß (Gute Ausrede ? )

Na gut, jetzt Plan B, ich hoffe, denn nimmst Du nicht so schnell auseinander, noch kleiner und ein Funktionsaufruf weniger:
Code:
#include <asuro.h>

void PrintChar(int x)
   {
   int b=0;
   if (x < 0) {
	while(!(UCSRA&(1<<UDRE)));
      UDR = '-'; 
	x = -x;
   }
   if (x >= 10) {
	while (x >= 10) {
	b++;
	x -=10;
	}
	PrintChar(b);

	}
	while(!(UCSRA&(1<<UDRE)));
      UDR = x + '0'; 
  
   }
	
   
int main(void)
{   
Init();
while(1)
      {  
      
	PrintChar(-1000);
      }   
	return 0;
}
Ergibt bei mir auch mit -Os
.text 730 0
.bss 18 8388704
1160 - 730 = 430 Bytes ?