/* inv.c Programa que copia uma cadeia de caracteres da area de programa para a RAM e em seguida inverte a cadeia na RAM - tamanho com otimização 0s: 158 bytes MC 404 2º Sem 2007 Prof Célio G Atualizado em: 25 Out 2007 ***************************************************************************************************/ #include #include // biblioteca para tratar dados na area de programa int strlen(char *); // somente para o compilador não emitir warnings! char mystring[] PROGMEM= "ABCDEFGHI"; // define uma cadeia C na área de programa char buffer[20] __attribute__((section("*.noinit"))); // __attribute__((section("*.noinit"))); // qdo não queremos inicializar variavel global; register unsigned char temp asm("r2"); //nao alterou o tamanho do código = 158 bytes int main(){ char *i, *f; strcpy_P(buffer, mystring);//copia a cadeia para a RAM i=buffer; //apontador para o inicio da cadeia f= buffer + strlen(buffer); //aponta para o fim da cadeia + 1 while (i < f ){ // caminha no vetor enquanto i < f temp= *--f; // predecrementa f, salva ultimo byte em temp *f = *i; // coloca no ultimo byte o valor do primeiro *i++= temp; // agora no primeiro coloco o valor salvo e incrementa i } }