Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori Zilog Z8. Quarta puntata - 6

microcontrollori Zilog Z8

La seconda istruzione richiede invece solo 2 byte, in quanto un registro di lavoro viene identificato solo da 4 bit, essendo un numero compreso tra 0 e 15. Ma vi è ancora un’altra importante differenza. La prima istruzione necessita, per essere eseguita, di 10 cicli di clock mentre la seconda necessita di soli 6 cicli di clock.

indirizzamento_registri_register_pointer

Detto in altri termini, l’esecuzione della seconda operazione risulta del 40 % più veloce della prima. Possiamo quindi affermare che l’utilizzo della specifica dei registri di lavoro consente di scrivere un codice più compatto e di rendere l’esecuzione del programma più veloce. Vi è poi un’ultima differenza, più pratica e meno tecnica, che invoglia ulteriormente ad utilizzare i registri di lavoro. Se in un programma molto complesso, si assegnano a diverse variabili del programma differenti aree di lavoro, risulta molto più semplice evitare errori abbastanza comuni come il modificare registri che invece non devono essere modificati. Concludendo, la scrittura del codice diventa molto più comprensibile e facilmente modificabile. Oltre al Register Pointer esistono altri registri speciali, cioè dedicati a particolari funzioni. Vediamone alcuni in dettaglio.

STACK POINTER

Il registro Stack Pointer è il registro che viene utilizzato dal programma ogni qual volta vi è una interruzione o una chiamata a una subroutine. In sostanza viene utilizzato dal micro per memorizzare il punto in cui viene abbandonato il programma principale eseguendo una routine per poi tornarvi in un secondo tempo. Lo Stack Pointer è localizzato da due indirizzi (255 e 254) in quanto risulta composto da 16 bit. Ad esso si può far riferimento con due diverse sigle: SPH Stack Pointer High (parte alta dello Stack Pointer = registro 254); SPL Stack Pointer Low (parte bassa dello Stack Pointer = registro 255). Lo Stack Pointer deve essere predisposto all’inizio di un programma in modo che all’arrivo di una interruzione il programma non si blocchi saltando a degli strani indirizzi di memoria.

indirizzi_registri

Quando l’area di stack è interna allo Z8 si utilizzano normalmente nella parte di programma dedicata all’inizializzazione le seguenti due istruzioni: LD SPL, #%80 CLR SPH In pratica, la seconda istruzione azzera il byte SPH, cioè la parte alta dello Stack Pointer, mentre la prima istruzione carica in SPL, cioè nella parte bassa dello Stack Pointer, il numero esadecimale 80. Lo Stack Pointer lavora in una modalità che può sembrare a prima vista un po’ strana: carica cioè i dati partendo da una certa locazione di programma andando verso il basso. L’indirizzo esadecimale 80 corrisponde quindi al punto più alto dell’area di memoria dedicata ai registri di uso generale. In questo modo, lo Stack Pointer ha a disposizione un’area di memoria abbastanza ampia. FLAGS Il registro di Flag contiene gli indicatori (la parola flag significa infatti bandiera) del risultato di una certa operazione. In ogni caso, va ricordato che non tutte le istruzioni vanno ad agire sul registro flag. Per questo motivo, analizzeremo dettagliatamente i flag durante la descrizione del set di istruzioni. Questa puntata risulta così conclusa, appuntamento alla prossima in cui parleremo specificatamente delle istruzioni disponibili nei micro Z8 e della gestione delle interruzioni.

Il kit è disponibile da Futura Elettronica

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 4 utenti e 34 visitatori collegati.

Ultimi Commenti