Se si passa lo scritto, si deve obbligatoriamente sostenere anche un
colloquio orale. Date ed orari degli orali
verranno indicati nella pagina dei risultati e sul Forum.
Esercizio 1
Si consideri il seguente generico programma assembly per il calcolo
della somma degli elementi di un array di 1024 interi memorizzati
a partire dall'indirizzo A (ogni intero e' memorizzato in una parola di 4 byte).
Riscrivere tale programma utilizzando anche la modalita' di indirizzamento indicizzato (Indexed addressing).
MOV R1,#0 ;aggiorna la somma in R1, posto inizialmente a 0
MOV R2,#A ;R2=indirizzo dell'array A
MOV R3,#A+4096 ;R3=indirizzo della prima parola dopo l'array
ciclo ADD R1,(R2) ;recupera l'operando attraverso R2, registro indiretto
ADD R2,#4 ;incrementa R2 di una parola (4 byte)
CMP R2,R3 ;abbiamo gia' finito?
BLT ciclo ;se R2 < R3 non abbiamo finito, quindi si continua
L'indirizzamento indicizzato si indica con C(R), dove C e' una costante ed R un registro.
Commentare il codice. Codice non commentato non verra' valutato.
Esercizio 2
Qual e' la funzione di un tipico PIO chip?
Descrivere i due modi in cui un PIO chip puo' venire selezionato.
Fornire un esempio semplice ma dettagliato di utilizzo di uno di tali modi.
Esercizio 3
Nelprogramma del corso e' presente un esempio di
I/O gestito ad interruzioni per la macchina del livello ISA del Tanenbaum.
In tale esempio il controllo della presenza di
interruzioni e' realizzato dall'interprete microprogrammato estendendo
il microinterprete del Tanenbaum con le seguenti microistruzioni
int1 if opc[15] goto main1;
int2 if (not(opc[0]) and not(opc[1]) ... and not(opc[7])) goto main1;
int3 SP=MAR=SP+1;
int4 MDR=PC; wr;
int5 SP=MAR=SP+1;
int6 MDR=OPC; wr;
int7 MAR=OxFF; rd;
int8 OPC[15]=1;
int9 PC=MDR; fetch;
int10