Esercitazioni
PIC - Assembly
|
Definizioni dell' ambiente di compilazione - list
La linea:
utilizza la direttiva LIST
che abbiamo già vista, ma con l' opzione X=ON , il che consente
di espandere le macro nel file di listato .lst ottenuto dalla compilazione.
Espandere le macro vuol dire che, ogni volta che nel sorgente il compilatore
ne incontra una, scriverà nel file di lista tutte le istruzioni che la
compongono. Vedremo più avanti in cosa consistono queste macro.
Se questo
non è desiderato, perchè può appesantire la lettura del listato, si sceglierà l' opzione
X=OFF oppure nulla, dato che questa è la scelta del default.
Solitamente è utile avere una espansione delle macro quando si
usano per la prima volta e si vuole verificarne la consistenza, mentre nelle
versioni finali del listato è preferibile non espanderle, il che lo rende più
leggibile.
La direttiva LIST ha, in generale, la funzione di controllare la generazione del
file di lista .lst.
Se non desideriamo che una parte del testo vi appaia, inseriremo la direttiva NOLIST,
che blocca la generazione della lista fino a che il compilatore incontra una
nuova direttiva LIST.
Da notare che il file di lista .lst e l' oggetto della compilazione sono due
cose ben differenti:
- la lista .lst è un testo ASCII che riporta, sotto forma
di elenco ordinato
e formattato, il risultato della compilazione. Comprende una lista
delle istruzioni, sia come simboli che come valori esadecimali, i commenti
ed anche un elenco dei simboli usati ed il loro valore assoluto. E' utile
come documentazione, ma sopratutto per la consultazione durante il debug.
E' la descrizione formale di quello che contiene il file oggetto.
- il file .hex è l'oggetto ottenuto della compilazione e contiene i codici binati che
andranno scritti nella memoria del chip.
File lista e file oggetto possono essere ottenuti dalla compilazione
indipendentemente uno dall' altro. Il fatto di sopprimere tratti di testo
nella lista con l' opzione NOLIST
non comporta alcuna conseguenza sull' oggetto.
I controlli di lista comprendono anche un PAGE
che ha lo scopo di generare in form feed (salto pagina) nella stampa del
listato. Questi comandi si possono inserire in qualsiasi momento nel sorgente e,
come detto, non hanno alcun effetto sull' oggetto che risulta dalla
compilazione, dato che il loro
scopo è solo quello di formattare il file .lst.
Possiamo notare una ulteriore particolarità:
L' Assembler MPASM è case sensitive, ovvero distingue maiuscole e
minuscole. In queste condizioni, ad esempio, i nomi imposti dal sorgente
(label) saranno ritenuti diversi a seconda dei caratteri usati; così label
è diverso da LABEL o da LAbel.
Questa è l' impostazione di default, ma si può modificarla in modo da
renderlo case insensitive.
E' vivamente consigliato usare un ambiente case sensitive, in quanto
permette di avere un numero molto maggiore di possibilità per i nomi (label).
Per contro, i nomi riservati dall' Assembler, ovvero quelli delle
direttive, degli opcodes, gli pseudo opcodes, le label interne, ecc.
possono essere scritti tanto in maiuscolo che in minuscolo.
Per cui, ad esempio, #INCLUDE
sarà equivalente a #include
e LIST potrà essere
scritto list e così
via.
La scelta di una modalità è relativa al gusto personale, anche se può
essere molto sensato utilizzare maiuscole e minuscole per identificare
elementi del sorgente.
I commenti, ovvero le parti di testo tra ;
e fine riga, possono essere scritte come si desidera in quanto non
entrano a far parte della compilazione.
|
|