Input a c |
Output b |
x 0 x 1 |
disconnesso x |
Codice | Operazione |
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 |
AND OR NOT COMPARAZIONE logica e aritmetica TEST B ADD SHIFT LEFT SHIFT RIGHT |
Flag | Evento |
Z |
segnala se il risultato dell'operazione logica o aritmetica compiuta ha come risultato la stringa nulla |
N |
segnala se il risultato dell'operazione compiuta è un numero negativo; questa segnalazione ha senso solo per operazioni aritmetiche, cioè quando le stringhe operando hanno significato numerico; tuttavia la ALU segnala comunque come negative anche le stringhe con significato logico, perchè si preoccupa soltanto di rilevare se il MSB è 1 (vedere "Rappresentazione in Complemento a Due"), quasiasi sia la natura della stringa. |
C |
segnala il trabocco di un uno sul MSB o LSB (trabocchi di zero non contano visto che il numero non cambia: 00214 è uguale a 214). |
V |
segnala un overflow o underflow. |
- 1: istruzioni del programma che non richiedono I\O
- 2: caricamento dell'indirizzo di memoria centrale da cui scrivere i dati trasferiti
- 3: caricamento della condizione di fine: o il numero di word da trasferire o la particolare word che appena letta fa terminare il trasferimento
- 4: test se il bit di pronto in lettura del registro di stato della periferica è alto
- 5: se il bit di pronto in lettura è basso ripeti l'istruzione precedente, altrimenti continua
- 6: istruzione che trasferisce la word dal registro di dato in uscita della periferica alla RAM o a un registro interno alla macchina
- 7: se la condizione di fine non è verificata ripeti da 4, altrimenti continua
- 8: parte restante del programma
rispetto agli altri metodi è molto inefficiente perchè tiene occupata la CPU a ciclare; è ormai abbandonato
- 1: abilitazione di quella periferica a lanciare interruzioni, alzando l'apposito bit del suo registro di stato
- 2: dichiarazione della posizione di memoria in cui si trova il programma di servizio di quella interruzione, inserendo l'indirizzo nel vettore delle interruzioni
- 3: istruzioni del programma che non richiedono I\O
- 4: caricamento dell'indirizzo di memoria centrale da cui scrivere i dati trasferiti (qui o nel programma di servizio?)
- 5: caricamento della condizione di fine: o il numero di word da trasferire o la particolare word che appena letta fa terminare il trasferimento (qui o nel programma di servizio?)
- 6: istruzione di lettura da periferiferica: o il programma ha un'istruzione di attesa - il calcolatore si ferma ad aspettare che la periferiferica sia pronta in lettura senza poter fare niente -
o ha un'istruzione di trap verso il sistema operativo - il sistema operativo cede il controllo della CPU ad altri programmi finchè non arriva il segnale di pronto -
quando il bit di pronto in and con il bit di abilitazione delle interruzioni della periferica è alto, la periferica lancia una interruzione e viene
attivato il programma di servizio, che trasferisce la word dal registro di dato in uscita della periferica alla RAM o ad un registro interno al calcolatore;
ciò si ripete finchè non viene raggiunta la condizione di fine; a questo punto, il programma di servizio ritorna e cancella l'interruzione
- 5: parte restante del programma
è utilizzato per le periferiche più lente e che non trsferiscono molti dati(ad es. la tastiera)
- 1: istruzioni del programma che non richiedono I\O
- 2: caricamento nel registro di indirizzo del controllore di DMA dell'indirizzo di memoria centrale da cui scrivere i dati trasferiti
- 3: caricamento nel registro di dato del controllore di DMA della condizione di fine: o il numero di word da trasferire
- 4: abilitazione di quella periferica a lanciare interruzioni, alzando l'apposito bit del suo registro di stato
- 5: dichiarazione della posizione di memoria in cui si trova il programma di servizio di quella interruzione, inserendo l'indirizzo nel vettore delle interruzioni
- 6: istruzione di avvio del trasferimento: o il programma ha un'istruzione di attesa - il calcolatore si ferma ad aspettare che la periferiferica abbia trasferito tutti i dati, senza poter fare niente -
o ha un'istruzione di trap verso il sistema operativo - il sistema operativo cede il controllo della CPU ad altri programmi finchè non arriva l'interruzione di fine trasferimento -
quando l'interruzione di fine trasferimento arriva, o finisce l'attesa o arriva un'istruzione di trap al sistema operativo che decide se far ripartire il programma
- 7: parte restante del programma
è un metodo pensato per liberare la CPU dall'incombenza di gestire lo scambio di dati fra periferiche e calcolatore: la differenza con gli altri due metodi, infatti, sta nell'inviare una interruzione
non per ogni word trasferita, ma per ogni blocco di word trasferito; in questo modo la CPU non deve eseguire un'istruzione di move da un indirizzo ad un altro per ogni
dato da scambiare.