Registro di stato
# Registro di stato

Il registro di stato (noto anche come status register, flag register, PSW o condition code register (CCR)) è un insieme di flag presenti nella CPU che indicano lo stato di diversi risultati di operazioni matematiche. Questi flag sono comunemente usati per confrontare e testare condizioni richieste dai programmi.

L'ordine, il numero e il significato dei flag del registro di stato varia da processore a processore, a causa delle diverse configurazioni ed architetture che sussistono per ognuno di esso. Ad esempio, l'architettura x86 possiede come registro di stato il FLAGS register.

## Program Status Word

A volte il registro di stato prende anche il nome di Program Status Word (o PSW). In questo caso, il termine designa un'area di memoria o un registro che contiene informazioni sullo stato dei programmi in esecuzione sul sistema operativo.

Tipicamente il PSW contiene bit che segnalano eventuali stati d'errore e codici di condizione come l'abilitazione/disabilitazione dell'interrupt e il passaggio dalla modalità utente alla modalità supervisore. È importantissimo per il ciclo di interrupt, in quanto, in caso di interruzione del programma in esecuzione, provvede a salvarne lo stato, in modo tale che, una volta ultimata la gestione di interrupt, possa essere ripristinato.

A volte il PSW può includere anche un program counter, che contiene l'indirizzo della prossima istruzione da eseguire.

## Flag di condizione

* ZF = Zero flag (o flag zero). Indica se il risultato di un'operazione matematica o logica è zero.
* CF = Carry flag (o flag di riporto). Indica se il risultato di un'operazione produce una risposta non contenibile nei bit usati per il calcolo. Questo flag può essere anche posizionato prima di un'operazione matematica come operando aggiuntivo per alcune istruzioni.
* SF = Sign flag (flag di segno). Coincide con il MSB del risultato dopo un'operazione aritmetica
* OF = Overflow flag. Indica se il risultato di un'operazione è in overflow, secondo la rappresentazione in complemento a due. È simile al carry flag, ma viene impiegato nelle operazioni in cui è presente il segno degli operandi.
* AF = Auxiliary Carry Flag. usato nell'aritmetica BCD; vale 1 se c'è stato riporto (somma) o prestito (sottrazione) del bit 3
* PF = Parity Flag. Vale 1 se il numero di 1 negli ultimi 8 bit meno significativi del risultato è pari, 0 altrimenti.

## Flag di controllo

* DF = Direction Flag. Utilizzato nelle istruzioni per la manipolazione delle stringhe. Se vale 0 le stringhe vengono manipolate partendo dai caratteri all'indirizzo minore. Se vale 1 a partire dall'indirizzo maggiore.
* IF = Interrupt Flag. Se vale 1 i segnali di interrupt vengono percepiti dalla CPU, altrimenti questi vengono ignorati.
* TF = Trap Flag. Se vale 1 viene eseguita una trap al termine di ogni istruzione.
