Calcolatori Elettronici

  

Universitą degli Studi di Cassino

Corso di Laurea in
Ingegneria Informatica e delle Telecomunicazioni

   prof. Francesco Tortorella  (mail)

     Anno Accademico 2010/2011

     secondo semestre

 


 

 

Esercitazione n. 2 - 07/04/2011

 

Esercizio A

 

Scrivere un programma in Assembly MIPS che calcoli il Massimo Comune Denominatore tra due numeri interi letti da input e salvati in due spazi opportunamente allocati nel segmento .data. Nello stesso modo si salvi il valore calcolato prima di stamparlo in output.

Si consideri a titolo di riferimento il seguente  codice C, che implementa l'algoritmo di Euclide:

 

 unsigned int a,b,mcd;

 

void main()

{

  unsigned int x,y,appo,r;

  

  cout << "Primo valore: ";

  cin >> a;

  cout << "Secondo valore: ";

  cin >> b;

 

  if (a>=b)

  {

    x = a;

    y = b;

  }

  else

  {

    x = b;

    y = a;

  }

 

  r = x%y;

  while (r!=0)

  {

     x = y;

     y = r;

            r = x%y;

  }

 

  mcd = y;

  cout << "Il MCD tra " << a << " e " << b;

  cout << "e' " << mcd << "\n";

}

 

 

 

Esercizio B

 

Realizzare il programma precedente definendo un opportuno sottoprogramma per il calcolo del MCD.  
Si consideri a titolo di riferimento il seguente  codice C:

 

unsigned int a,b,mcd;

 

void main()

{

  cout << "Primo valore: ";

  cin >> a;

  cout << "Secondo valore: ";

  cin >> b;

 

  mcd = mascomdiv(a,b);

  cout << "Il MCD tra " << a << " e " << b;

  cout << "e' " << mcd << "\n";

}



int mascomdiv(int x, int y)
{
  int appo, r;

  if (x<y)

  {

    appo = x;

    x = y;

    y = appo;

  }

 

  r = x%y;

  while (r!=0)

  {

     x = y;

     y = r;

            r = x%y;

  }

  return y

}

 

 

 
     

 

 


Home page del corso

© 2011 Francesco Tortorella.
Ultimo aggiornamento: 5/4/2011.