Tutorials - PIC - Corso A&C

 

Esercitazioni PIC - Assembly


Definizioni dell' ambiente di compilazione - list

La linea:

         LIST X = ON

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.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 23/06/14.