Andiamo ora ad illustrare altre due
componenti fondamentali nell'architettura del PIC, la ALU ed il registro
W o accumulatore.

La ALU (acronimo di Arithmetic
and Logic Unit ovvero unità aritmentica e logica) è la
componente più complessa del PIC in quanto contiene tutta la circuiteria delegata a
svolgere le funzioni di calcolo e manipolazione dei dati durante l'esecuzione di un
programma.
La ALU è una componente presente in tutti
i microprocessori e da essa dipende direttamente la potenza di calcolo del micro stesso.
La ALU del PIC16F84 è in
grado di operare su valori ad 8 bit, ovvero valori numerici non più
grandi di 255. Esistono microprocessori con ALU a 16, 32, 64 bit e oltre. La famiglia
Intel© 80386©, 486© e Pentium© ad esempio dispone di una ALU a 32 bit. Le potenze di
calcolo raggiunte da questi micro sono notevolmente superiori a scapito della complessità
della circuiteria interna ed accessoria e conseguentemente dello spazio occupato.
Direttamente connesso con la ALU c'è il registro W
denominato anche accumulatore. Questo registro consiste di una semplice
locazione di memoria in grado di contenere un solo valore a 8 bit.
La differenza sostanziale tra il registro W e le altre
locazioni di memoria consiste proprio nel fatto che, per referenziare ill registro W, la
ALU non deve fornire nessun indirizzo di memoria, ma può accedere direttamente.
Il registro W viene utilizzato spessissimo nei programmi
per PIC.
Facciamo un esempio pratico. Supponiamo di voler inserire
nella locazione di memoria 0CH del REGISTER FILE il
valore 01H. Cercando tra le istruzioni del PIC ci accorgiamo subito che
non esiste un'unica istruzione in grado di effettuare questa operazione ma dobbiamo
necessariamente ricorrere all'accumulatore ed usare due istruzioni in sequenza.
Vediamo perché:
Come detto nei passi precedenti, l'opcode di una istruzione
non può essere più grande di 14 bit mentre a noi ne servirebbero:
8 bit per specificare il valore che
intendiamo inserire nella locazione di memoria,
7 bit per specificare in quale locazione di memoria vogliamo inserire il
nostro valore,
6 bit per spcificare quale istruzione intendiamo utilizzare.
per un totale di 8 + 7 + 6 = 21 bit.
Dobbiamo quindi ricorrere a due istruzioni, ovvero:
movlw 01H
movwf 0CH
che prima inseriscono nel registro W il
valore 01H con l'istruzione MOVe Literal
to W e poi lo "muovono" nella locazione 0CH con l'istruzione MOVe
W to F.
Nel passo successivo incontreremo
il Program Counter e lo Stack che ci aiuteranno a capire come funzionano le istruzioni di
salto del PIC. |