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
nonostante ci sia stato dato un algoritmo (in C) di riferimento (posso postare il link?) non riusciamo a effettuare la "traduzione" in assembler...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"); } } }
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...
lo so, questa volta chiedo moltocodice: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:![]()
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..

Rispondi quotando