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";
}
|