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..