Esonero di Architettura degli elaboratori 2, canale EO 24/04/09 Prof. Annalisa Massini, Dott. Simone Silvestri COMPITO A Esercizio 1 (10 punti) Scrivere un programma in assembler MIPS che legga in input da tastiera 3 valori, siano questi a, b, c e calcoli: - [ 3(a+b)2 ] Non è ammesso semplificare la formula. Si deve specificare chiaramente il registro che conterrà il risultato. Si ricorda che il codice della chiamata a sistema per la lettura di un intero è 5. Esercizio 2 (8 punti) Scrivere un programma in assembler MIPS che allochi in memoria un array di 4 word, contente i valori: 1, -2, 7, 5. Il programma deve: * Leggere il valore in posizione 0 utilizzando l’indirizzamento “etichetta”. * Scrivere in posizione 2 il valore letto in precedenza moltiplicato per 5, utilizzando l’indirizzamento “etichetta immediato (registro)”. Indirizzamenti diversi da quelli richiesti saranno considerati errati. Esercizio 3 (12 punti) Scrivere un programma in assembler MIPS che: * Legga in input da tastiera due valori, siano questi m ed n. * Calcoli il quoziente della divisione intera di m/n. Non si possono utilizzare le istruzioni div e rem. Si ricorda che dati m ed n, la divisione intera m/n individua due valori interi k e q, dove k è il massimo valore intero t.c. m = kn + q. k è detto quoziente della divisione e q è detto resto. Esonero di Architettura degli elaboratori 2, canale EO 24/04/09 Prof. Annalisa Massini, Dott. Simone Silvestri COMPITO B Esercizio 1 (10 punti) Scrivere un programma in assembler MIPS che legga in input da tastiera 3 valori, siano questi a,b e c, e calcoli: [ (a + b + c) (-b)]2 Non è ammesso semplificare la formula. Si deve specificare chiaramente il registro che conterrà il risultato. Si ricorda che il codice della chiamata a sistema per la lettura di un intero è 5. Esercizio 2 (8 punti) Scrivere un programma in assembler MIPS che allochi in memoria un array di 4 word, contente i valori: 4, 8, -3, 22. Il programma deve: * Leggere il valore in posizione 3 utilizzando l’indirizzamento “etichetta immediato (registro)”. * Scrivere in posizione 0 il valore letto in precedenza moltiplicato per 2, utilizzando l’indirizzamento “base register”. Esercizio 3 (12 punti) Scrivere un programma in assembler MIPS che: * Legga in input da tastiera due valori, siano questi m e n. * Calcoli il resto della divisione intera di m/n. Non si possono utilizzare le istruzioni div e rem. Si ricorda che dati m ed n, la divisione intera m/n individua due valori interi k e q, dove k è il massimo valore intero t.c. m = kn + q. k è detto quoziente della divisione e q è detto resto. Si deve specificare chiaramente il registro che contiene il risultato. Esonero di Architettura degli elaboratori 2, canale EO 24/04/09 Prof. Annalisa Massini, Dott. Simone Silvestri COMPITO C Esercizio 1 (10 punti) Scrivere un programma in assembler MIPS che legga in input da tastiera 3 valori, siano questi a,b e c, e calcoli: [(a+b)2 (b+c)2] Non è ammesso semplificare la formula. Si deve specificare chiaramente il registro che conterrà il risultato. Si ricorda che il codice della chiamata a sistema per la lettura di un intero è 5. Esercizio 2 (8 punti) Scrivere un programma in assembler MIPS che allochi in memoria un array di 4 word, contente i valori: 6, -11, 4, 31. Il programma deve: * Leggere il valore in posizione 2 utilizzando l’indirizzamento “etichetta immediato (registro)”. * Scrivere in posizione 1 il valore letto in precedenza moltiplicato per 14, utilizzando l’indirizzamento “etichetta + espressione”. Esercizio 3 (12 punti) Scrivere un programma in assembler MIPS che: * Legga in input da tastiera due valori, siano questi m e n. * Calcoli mn. Si deve specificare chiaramente il registro che contiene il risultato.