Calcolatori Elettronici I

  

Università degli Studi di Cassino

Corso di Laurea in
Ingegneria delle Telecomunicazioni

   prof. Francesco Tortorella  (mail)

     Anno Accademico 2007/2008

     secondo quadrimestre

 


 

 

Esercitazione n. 6 - 26/2/2008

 

Esercizio

 

Scrivere un programma in Assembly MIPS che legga da input gli elementi di un array di interi unsigned, salvandoli in uno spazio opportunamente allocato nel segmento .data.  Il programma costruisca poi due array (da memorizzare in uno spazio opportunamente allocato nel segmento .data) in cui vadano inseriti, rispettivamente, i valori pari e dispari contenuti nell'array fornito in input.

Si usi lo stack per realizzare il passaggio di parametri.

NB: la verifica sulla parità di un valore si può realizzare facilmente tramite opportune istruzioni logiche.


Si consideri a titolo di riferimento il seguente  codice C:

 

 unsigned int vet[100];

 unsigned int vetpari[100];

 unsigned int vedisp[100];

 int riemp;

 int riemppari;

 int riempdisp;

 

void main()

{

  int num;

  leggi_vet(vet,num);

 

  riemp=num;

  build_vets(vet,vetpari,vetdisp,riemp,riemppari,riempdisp);

  stampa_vet(vetpari,riemppari);

  stampa_vet(vetdisp,riempdisp);

}

 

 

void leggi_vet(int v[],int &n)

{

  int x;

  int i;

 

  cout << "Numero elementi: ";

  cin >> n;

 

  for(i=0;i<n;i++)

  {

    cout << "Elemento " << i <<": ";

    cin >> x;

    vet[i]=x;

  }

}

void build_vets(int v[],int vp[],int vd[],int n,int &np,int &nd)

{

  int i;

      

     np=0;

  nd=0;

  for(i=0;i<n;i++)

    if(v[i]%2==0)   

    {

      vp[np]=v[i];

      np++;

    }

    else

    {

      vd[nd]=v[i];

      nd++;

    }

}

void stampa_vet(int v[],int n)

{

  int i;

  

  for(i=0;i<n;i++)


    cout << "Elemento " << i <<": "<< vet[i]<<"\n";

}

 

 
   
     

 

 


Home page del corso

© 2008 Francesco Tortorella.
Ultimo aggiornamento: 25/2/2008.