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. 5 - 18/2/2008

 

Esercizio A

 

Scrivere un programma in Assembly MIPS che legga da input gli elementi di un array di interi signed, salvandoli in uno spazio opportunamente allocato nel segmento .data.  Il programma determini quindi l'indice del primo elemento negativo presente nell'array.

Si consideri a titolo di riferimento il seguente  codice C:

 

int vet[128];

int riemp;

 

 

void main()

{

  int pos;

  

  leggi_vet(vet,riemp);

 

  trova_neg(vet,riemp,pos);

 

  cout << "Posizione primo el. negativo: << pos;

  cout << "\n";

}

 

 

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

{

  int x;

 

  cout << "Numero elementi: ";

  cin >> n;

 

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

  {

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

    cin >> x;

    vet[i]=x;

  }

}

 

 

void trova_neg(int v[],int n,int &p)

{

  int i,int x;

 

  i=0;

 

  while(i<n)

  {

     if(v[i]<0)

     {

       p=i;

       break;
     }

 

     i++;

  }

}

 

 

 

 

 

 

Esercizio B

 

Scrivere un programma in Assembly MIPS che legga da input due array di interi signed contenenti lo stesso numero di elementi e li salvi in uno spazio opportunamente allocato nel segmento .data. Il programma costruisca poi un terzo array (anch'esso da memorizzare nel segmento .data) in cui ogni elemento è costituito dal massimo degli elementi omologhi appartenenti ai due array letti.

Si consideri a titolo di riferimento il seguente  codice C:

 

 int vet1[100];

 int vet2[100];

 int vetmax[100];

 int riemp;

 

void main()

{

  int riemp1,riemp2;

  leggi_vet(vet1,riemp1);

  leggi_vet(vet2,riemp2);

  

  if(riemp1!=riemp2)

  {
    cout<<"Errore: vettori di dimensioni diverse\n";
    exit();
  }

 

  riemp=riemp1;

  build_vet(vet1,vet2,vet3,riemp);

  stampa_vet(vet3,riemp);

}

 

 

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_vet(int v1[],int v2[],int v3[], int n)

{

  int i;

 

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

    if(v1[i]>v2[i])

      v3[i]=v1[i];

    else

      v3[i]=v2[i];

}

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: 15/2/2008.