Eccomi a scocciare per la terza volta..
probabilmente ormai mi odierete ç_ç ma io intanto chiedo, al massimo non rispondetemi o arrabbiatevi (fareste bene, lo capisco)
Mi trovo a lottare da questa mattina alle 10 col l'ultimo esercizio di assembler che mi trovo a dover fare...
o meglio..ci troviamo, ci sto ragionando assieme a compagni di studi ma niente da fare..siamo tutti bloccati, chi più o chi meno...
Questa volta il problema è quello di generare le permutazioni dei primi N numeri naturali contenuti all'interno di un array...
ho sempre il mio "scheletro in C" da non poter modificare

codice:
#include <stdio.h>  
void main() 
{ 	
int N=4;  //numero di interi 	
int Perm[4326] = {1,2,3,4}; //array permutazioni 	
int Num;  	
_asm 	
{


}

{
    int i,j,k;
     printf("Permutazioni dei primi %d numeri naturali \n",N);
     for (i=k=0;i<Num;i++)
	{
	  for(j=0;j<N;j++)
			{
			   printf("%3d",Perm[k++]);
			}
			printf("\n");
		}
	}
}
nonostante ci sia stato dato un algoritmo (in C) di riferimento (posso postare il link?) non riusciamo a effettuare la "traduzione" in assembler...

io ho abbozzato questo, ma non so quando abbia senso :/ è proprio fermo agli albori :/ in teoria dovrebbe cominciare a scorrere da fine vettore verso l'inizio, cercando un numero < di quello in esame...

codice:
XOR EAX,EAX //contiene l'indice di EDX da modificare 	(ovvero l'indice che decremento per scorrere gli el del vettore)	
XOR EBX,EBX  //contiene numero  		
XOR ECX,ECX  //lo uso come indice dell'ultimo elemento 		
XOR EDX,EDX 		
	

MOV ECX,N //metto in ECX la lunghezza che ci fa da indice 		
MOV EBX,Perm[ECX] //contenuto ultima cella del vettore 		
MOV EAX,ECX   //eax contiene l'indice da modificare (len) 		
DEC EAX //decremento così diventa il penultimo indice 		
CMP EAX,0 //se i = 0 finisce il programma 		
JE fine         
CMP EBX,Perm[EAX] //controlla l'ultimo numero nel vettore con quello precedente, devo controllare che ebx (ovvero il numero prima a quello in esame) sia < del numero in esame
//non capisco che salto mettere...  in teoria un JB se la condizione sopra è verificata..


fine:
lo so, questa volta chiedo molto
non è che non ho voglia di farlo, ma proprio non capisco (non capiamo..neanche unendo i cranii ce la facciamo) dove mettere le mani..l'esercizio delle permutazioni è un bel pò più tosto rispetto gli altri due, così ce l'avevano presentato..e così si è visto :/
qualche anima pia che abbia voglia di aiutare?
davvero un giorno quando riuscirò a gestire questi linguaggi con dimestichezza ricambierò l'aiuto!
grazie in anticipo..