Si scriva un programma in linguaggio assembler che riceva in
input 10 numeri N1, N2, ..., N10. Si memorizzi il primo numero ricevuto in input (N1).
I successivi numeri ricevuti in input (N2, ..., N10) devono essere memorizzati
solo se maggiori di N1. Si stampi alla fine i numeri memorizzati.
SI consideri presente nella cella di indirizzo 99 il valore 10 e nella cella di indirizzo 98
il valore 1.
N.B. Naturalmente l'input dei 10 numeri va fatto con un ciclo non con 10 istruzioni di input :-).
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 N1=4, N2=8, N3=3, N4=5, N5=2, N6=7, N7=8, N8=1, N9=8, e N10=2.
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 |
Si descriva dettagliatamente il funzionamento delle interruzioni e del DMA.
Si descriva dettagliatamente il funzionamento della cache.
Si descrivano dettagliatamente gli algoritmi per il rimpiazzamento delle pagine nella gestione della memoria con memoria virtuale.
Si descrivano dettagliatamente i metodi per l’implementazione dei collegamenti ai files in directories organizzate in grafi aciclici. In particolare si discutano i collegamenti in sistemi Macintosh e UNIX indicando quali sono le possibili operazioni sui files che distruggono i collegamenti.
Si descriva dettagliatamente gli stati (operativi) di un processo e si dicano in che modo avvengono i cambiamenti di stato.