(punti 6)
Si scriva un programma in linguaggio assembler che riceva in
input un numero N maggiore di 0 (se il valore ricevuto in input non e' maggiore di 0 si dovra' ripetere la
fase di input fino ad ottenerlo. Si calcoli quindi il valore di M=10*N (ovvero N sommato 10 volte),
e si restituisca in output N ed M.
Si illustri anche il contenuto dei registri IR, MAR, MDR, PC e A (accumulatore
ALU) alla fine della esecuzione del programma quando siano dati in input i
valori N=4.
Lo studente supponga di avere gią in memoria
eventuali costanti necessarie al programma e di avere a disposizione le
seguenti istruzioni:
Arithmetic | 1xx | ADD |
2xx | SUB | |
Data Movement | 3xx | STORE |
5xx | LOAD | |
BR | 6xx | JUMP |
BRZ | 7xx | BRANC ON 0 |
BRP | 8xx | BRANCH ON + |
Input/Output | 901 | INPUT |
902 | OUTPUT | |
Machine Control | 000 | HALT |
(punti 4) Si descrivano dettagliatamente i passi del ciclo di Fetch-Execute per le istruzioni
(punti 5)
Si descriva dettagliatamente
come avviene la lettura e la scrittura di dati e istruzioni dalla memoria (uso dei registri, delle linee di attivazione, della linea R/W).
Se necessario usare anche dei disegni/schemi.
(punti 5)
Si descriva dettagliatamente
il funzionamento della Memoria Virtuale tramite la tecnica del "Paging".
(punti 5)
Si descriva dettagliatamente
il funzionamento della memoria cache e le motivazioni all'uso della cache stessa.
(punti 7)
Si descrivano dettagliatamente
il funzionamento degli Interrupt (cosa sono, perche' sono importanti, cosa succede in caso di richieste di interrupt da pił
devices).
Se necessario usare anche dei disegni/schemi.