Come usare tanti Switch Case (o If) [Problemi memoria?]

ho capito ciò che intendi..in parole spiccie,sposti le stringhe dalla SRAM alla Flash..però occupi lo spazio delle stringhe(splittata in caratteri),più quello degli opcode(istruzione)..quindi occupi tipo il doppio di spazio(un byte di istruzione,più un byte di carattere,per ogni possibile carattere)..

ecco come viene tradotto in assembly un banale switch con 2 case e il tuo assegnamento..

00121029  cmp         dword ptr [ebp-10h],2  
0012102D  je          main+2Fh (12103Fh)  
0012102F  jmp         main+3Fh (12104Fh)  
;	case 1:
;		stringa[0]='a';
00121031  mov         byte ptr [stringa],61h  
;		stringa[1]='v';
00121035  mov         byte ptr [ebp-0Bh],76h  
;		stringa[2]=0;
00121039  mov         byte ptr [ebp-0Ah],0  
;		break;
0012103D  jmp         main+3Fh (12104Fh)  
;	case 2:
;		stringa[0]='v';
0012103F  mov         byte ptr [stringa],76h  
;		stringa[1]='b';
00121043  mov         byte ptr [ebp-0Bh],62h  
;		stringa[2]='a';
00121047  mov         byte ptr [ebp-0Ah],61h  
;		stringa[3]=0;
0012104B  mov         byte ptr [ebp-9],0  
;		break;

l'ho fatto su una macchina a 32 bit,quini ovviamente non guardare troppo il formato degli indirizzi e i vari dword..anzi,a occhio non saprei se l'arduino fa la mov con un'istruzione o ne necessita due(dato che ha un displacement)

@m_ri:
puoi postare il sorgente che hai usato?

è già nei commenti dell'assembler..cosi si capisce meglio a cosa corrispondono le varie istruzioni..note: ho disabilitato le ottimizzazioni(altrimenti con più case avrei avuto jump table) e la protezione dei buffer(escludo che arduino metta dei cookie..)