Il Set di istruzioni dei PIC18
|
Il Set di Istruzioni PIC
Le istruzioni possono essere suddivise in tre gruppi, in
funzione del loro raggio di azione :
- Istruzioni orientate al controllo di registri o bytes (byte-oriented
operations).
- Istruzioni oriente al controllo dei bits (bit-oriented operations).
- Istruzioni con argomenti numerici e di controllo (literal and control
operations).
- Le istruzioni dedicate alla gestione delle tabelle (solo nei PIC18F)
Va ricordato, poi, che è possibile suddividere le istruzioni anche a
seconda del genere di operando a cui sono associate; in questo caso si hanno :
- istruzioni che sono associate ad un operando
- istruzioni che sono associate ad un operando e ad una destinazione
- istruzioni che non necessitano di operando
Sintassi delle istruzioni
Nelle tabelle seguente sono raccolte le istruzioni. Le colonne
presentano :
- il codice mnemonico
- gli operandi
- la schematizzazione della funzione
- il codice binario corrispondente
- i flag interessati
- il numero di cicli di esecuzione
La convenzione scelta da Microchip comprende le seguenti attribuzioni
:
Simbolo
|
Cosa indica |
Note |
a |
Access Bank |
se a = 0 Access Bank attivo |
PIC18F |
se a = 1 banco RAM selezionato con BSR |
b |
indirizzo (Data Memory) |
|
BSR |
Bank Select Register per indirizzare i
banchi della Memoria Dati |
PIC18F |
C |
Flag Carry dello STATUS |
|
DC |
Flag Digital Carry dello STATUS |
|
Z |
Flag Zero dello STATUS |
|
OV |
Flag Overflow dello STATUS |
PIC18F |
N |
Flag Negative dello STATUS |
|
d |
è la destinazione di una operazione |
se d = 0 la destinazione è w |
|
se d = 1 la destinazione è f |
|
f |
è un registro generico, sia esso
locazione di memoria, I/O o registro interno |
|
fs |
registro sorgente (indirizzo a 12 bit) di
MOVFF |
PIC18F |
fd |
registro destinazione (indirizzo a 12 bit)
di MOVFF |
PIC18F |
GIE |
Global Interrupt Enable bit |
|
k |
è un numero fisso (nella base, se
specificata; altrimenti in quella di default) |
|
l |
come sopra |
|
label |
il nome della label |
|
mm |
Modalità di TBLPTR
per l' accesso alle tavole |
*
nessuna modifica
*+
post incremento
*-
post decremento
+*
pre incremento |
PIC18F |
n |
|
PIC18F |
PC |
|
|
PCL |
|
|
PCLATH |
|
|
PCLATU |
|
|
PD |
|
PIC18F |
PRODH |
|
PIC18F |
PRODL |
|
PIC18F |
s |
modo Fast dell' istruzione
CALL o RETURN |
se s = 0 modo normale |
PIC18F |
se s = 1 Fast Mode attivato |
TBLPTR |
|
PIC18F |
TABLAT |
|
PIC18F |
TO |
|
|
TOS |
|
PIC18F |
u |
|
|
WDT |
|
|
WREG
w |
I PIC hanno un solo
"accumulatore", chiamato work register o w attraverso
il quale passa buona parte delle operazioni |
|
x |
|
|
zs |
|
PIC18F |
zd |
|
PIC18F |
Note :
- Nelle istruzioni che prevedono una scelta della destinazione del
risultato dell' operazione, se la destinazione d non viene
specificate, l' Assembler MPASM utilizza il suo default per
completare l' istruzione; siccome questa potrebbe non essere la
scelta voluta dal programmatore, MPASM genera un warning per
avvertire.
- Il campo di indirizzamento del registro f è limitato a 7
bit per i PIC16F e a 8 per i PIC18F
|
La sintassi tipica di una riga di istruzione è la seguente :
[Label]
opcode
obj, destination
; commento
Gli elementi che la compongono sono questi :
- La Label è opzionale. Se viene inserita, deve iniziare
obbligatoriamente nella prima colonna del testo.
- Tra la label e l' opcode deve esserci almeno uno spazio (o più
spazi) o un TAB (
)
- Se manca la Label, l' opcode non deve iniziare nella
prima colonna del testo. Sono opcode validi sia quelli del set di
istruzioni, sia quelli accettati dal Macro Assembler, sia le macro
correttamente dichiarate
- se l' istruzione necessita di un oggetto, deve essere inserito uno o più
spazi o TAB
- se non è previsto un oggetto, passare al punto 9
- L' oggetto dipende dall' istruzione. Sono oggetti validi
numeri nei formati accettati dall' Assembler e Label
- se l' oggetto include una destinazione, tra oggetto e destinazione va
inserita una virgola, altrimenti passare al punto 9
- Per le istruzioni che hanno una possibile scelta della destinazione,
essa va indicata in modo corretto
- se la destinazione è un bit in un byte, va indicata la posizione
del bit con un numero da 0 (LSB) a 7 (MSB) oppure con la label opportuna
- se la destinazione è il file o w, va indicata con 1 o 0 oppure
con la label di riferimento
- non occorre inserire spazi o tabulazioni nella sequenza obj,destination
- se la linea ha un commento, occorre separarlo con uno o più spazi o TAB
- il commento inizia con ; dopo di che si può inserire un qualsiasi testo
fino alla lunghezza massima della riga
|