E' distribuito gratuitamente da Microchip e fa parte della suite MPLAB.
E' interessante fare un doppio click su uno dei files .INC: in ambiente Windows
il file verrà aperto dal Blocco Note, mostrando il contenuto che, all' atto
pratico, è un semplice testo.
In effetti i file INC, che sono definiti come
Header Files e sono trattabili con un qualsiasi normale editor, contengono
una lista delle label (nomi) con cui vengono identificati i vari registri,
della loro equivalenza con gli indirizzi esadecimali nei vari PIC, oltre a
varie definizioni ed equates necessarie all' Assembler per la compilazione
dell' oggetto.
Avvertenza:
se pur modificabili per particolari esigenze, i file INC,
e
comunque tutti i file di testo forniti con MPASM,
NON vanno alterati a meno si sappia bene cosa si sta facendo, altrimenti la
compilazione dell' Assembler potrà fallire o, peggio, originare eseguibili
non corretti.
Volendo operare modifiche
sugli .INC o .LKR, è opportuno farne una copia di sicurezza. |
Come usare MPASM
MPASMWIN, come praticamente tutti gli assembler, è estremamente
semplice,
per non dire grezzo, nell' interfaccia con l' utente, dove dispone di una unica finestra operativa.
Ma questo lo rende superfacile da usare.
in effetti si tratta di una finestra di Windows dietro a cui sta un programma
DOS.
Dalla finestra di controllo è possibile selezionare il file sorgente da assemblare ed una serie
di opzioni di assemblaggio. Questa finestra è richiamata dal programma MPASMWIN.exe. La
stessa funzione si ottiene con il comando Built All in
ambiente MPLAB.
Questa è la finestra tipica.
si notano numerosi tasti di selezione. Vediamone nel dettaglio la funzione:
BROWSE
Questo tasto consente di comandare una tradizionale finestra di ricerca file nelle
risorse del PC. Si dovrà puntare il file di testo che è il sorgente dell'
assemblaggio. Va inserito il path completo del file, che, solitamente è
opportuno aver salvato con l' estensione .ASM, in modo da distinguerlo da altri
file di testo.
Dieci tasti di opzione permettono di configurare l' ambiente di
assemblaggio:
Opzione |
Funzione |
Radix |
Sovrapassa il settaggio della radice del file sorgente |
Warnin Level |
Sovrapassa il settaggio dei warning impostato nel sorgente |
Hex Outpuit |
Stabilisce un particolare formati del file .HEX in sucita |
Generated Files |
Stabilisce quali files saranno generati |
Case Sensitvity |
Abilita o disabilita la case sensibility |
macro Expansion |
Sovrapassa le opzioni di espansione delle macro |
Processor |
Sovrapassa la scelta del processore operata nel sorgente |
Tab Size |
Seleziona il formato dei TAB |
Extra Options |
Ogni comando addizionale (manuale cap.2) |
Save Settings on Exit |
Salva i settaggi correnti e li ripropone alla prossima apertura del
programma |
RADIX
Una lista RADIX permette di selezionare la base di default in cui sono espressi i
numeri nel sorgente.
Le scelte sono :
- Default
- Hexadecimal
- Decimal
- Octal
Nel primo caso la radice è quella identificata da una riga RADIX in testa
al sorgente e, in mancanza di indicazioni, è Hexadecimal. L' Assembler tratterà i numeri non esplicitamente
specificati come se fossero nella base indicata.
Quindi, se la lista sorgente contiene la riga
RADIX DEC
si sceglierà l' opzione Default e un numero espresso con
movlw 22
sarà assemblato come se fosse 22 decimale, mentre sarà
sempre possibile definire nel sorgente numeri in altre basi, ad esempio :
movlw 0x22
sarà considerato un numero esadecimale.
Se la linea RADIX non è inserita nel sorgente, la scelta dal pannello di MPASM
impone la base della numerazione, ma se si sceglie Default e il sorgente non
dichiara alcuna radice, il default di MPASM è Hexadecimal.
Come linea generale, la scelta ottimale è quella di NON
lasciare all' assemblatore la definizione della radice, ma fissarla nel sorgente
con lo statement RADIX ; questo permette di avere un maggiore controllo su cosa
si sta facendo.
Warning Level
Una seconda lista permette di abilitare in vario modo la
presentazione degli errori che l' Assembler incontra (o crea) nel trattare il
file sorgente. Le scelte sono :
- Default
- All Messages
- Warning and Errors
- Errors Only
Anche qui, è possibile , attraverso lo statement ERROR dell' Assembly definire
quali indicazioni si desiderano evidenziate nelle liste e la scelta Default è
quella consigliata : dalla scrittura del sorgente posso controllare quali
messaggi abilitare; se non do indicazione, l' Assembler emetterà tutti i
messaggi prodotti durante l' elaborazione.
Le altre scelte danno risultati chiaramente indicati nel loro stesso nome.
- La scelta All Messages produce la creazione di tutti i messaggi di
errore.
- La scelta Warning and Errors permette la creazione dei soli
messaggi relativi
ad errori e warnings.
- La scelta Errors Only abilita solo la creazione dei messaggi relativi ad
errori, abolendo i messaggi di warning.
La differenza tra Warning e Error è la seguente :
- gli Error (errori) sono generati
quando l' Assembler incontra situazioni che impediscono la corretta compilazione
dell' eseguibile.
- I Warnings (avvisi di attenzione) e i Messages possono anche non
bloccare la creazione dell' eseguibile, ma
avvertono l' utente che l' Assembler si è trovato davanti ad una situazione
dubbia e che ha effettuato una scelta di default, in modo che si possa
intervenire se la scelta realmente desiderata fosse un' altra.
I messaggi, di qualunque genere, possono essere utili,
ma la loro presenza nel listato può appesantirlo alquanto.
La scelta di cosa
far apparire e cosa no resta al programmatore ed al suo modo di lavorare.
AVVERTENZA:
Si consiglia a chi inizia di
non abolire alcun messaggio, nè error nè
warning fino a quando non si è ben compresa la funzione di questi elementi.
Poi, una scelta ragionata dei messaggi da abolire potrà essere fatta inserendo
nel sorgente lo statement ERROLEVEL del Macro Assembler.
|
Altre informazioni sui messaggi sono disponibili più avanti.
Hex Output
L' Assembler può produrre il file eseguibile in vari formati
standard , che sono poi quelli accettati dai sistemi di programmazione. Anche
qui sono possibili alcune scelte :
- Default
- INHX8M
- INHX8S
- INHX32
Non c'è particolare ragione di effettuare scelte diverse dal default
che è INHX8M, a meno che le esigenze dell'
apparecchiatura di programmazione siano differenti.
Generate Files
Sono spuntabili varie caselle che indicano quali file produrrà
l' Assembler in uscita. Si possono effettuare più scelte contemporaneamente,
come pure si può optare per la sola generazione del file di listato (.LST) e
del file errori (.ERR) in fase di sviluppo
I file che interessano l' attivita di MPASM sono:
Estensione |
Funzione |
.ASM |
Estensione di default per i lile sorgenti da assemblare |
.LST |
Estensione default per il listato generato dall' assemblaggio del
sorgente |
.ERR |
Estensione default per il file di eventuali errori di assemblaggio |
.HEX |
File oggetto binario in uscita dal processo di assemblaggio |
.HXL/.HKH |
Estensioni di uscita di MPASM per file divisi in byte alti e bassi |
.COD |
Estensione per il file simbolico e di debug |
.O |
Estensione per il file oggetto |
- Error File : viene generato un file di testo .ERR che contiene solo gli errori
prodotti.
- List File : viene generato un file di testo .LST che contiene il listato
corrispondente al sorgente
- Cross Reference : viene generato un file di testo .COD che contiene la cross
reference delle label usate nel sorgente
- Object File : viene generato un file oggetto con estensione .OBJ
NOTE e AVVERTENZE:
- Va precisato
che se sono rilevati errori, l' Assembler genera il file .ERR che è
la lista di questi errori, assieme al file .LST, ma non produrrà file
.HEX.
-
In assenza di errori, l' Assembler genera
un file .ERR vuoto e, per default, un file .HEX che contiene l' eseguibile nel formato esadecimale selezionato. Se
viene abilitata la selezione Object File, il file .OBJ è
generato al posto del file .HEX
-
Solitamente nei primi tentativi di assemblaggio, può essere
utile selezionare solo le prime due caselle, per ottenere Lista .LST e Lista errori
.ERR,
in modo da effettuare prontamente le correzioni necessarie. Quando l' Assembler
non produrrà più errori, si potrà far generare anche l' eseguibile per
passarlo poi al dispositivo di programmazione.
-
Tutti i file in uscita hanno lo stesso nome del file sorgente, ognuno con la sua
diversa estensione.
Quindi, se la sorgente si chiama Prova .asm, il file
eseguibile sarà Prova.hex, mentre la lista degli errori sarà Prova.err e così
via. Questi default possono essere variati attraverso il campo Extra Options.
|
Case Sensitive
La casella se viene selezionata, fa si che l' Assembler consideri le label e
i nomi con maiuscole e minuscole, per cui, ad esempio, STATUS
e Status e status
saranno considerati tre diversi oggetti. E' la scelta migliore, che permette la
maggiore flessibilità, ampliando il campo delle label utilizzabili.
Se, invece, questo non
interessa, si potrà scrivere uno sorgente meno definito deselezionando la
casella. In tal caso le label STATUS e Status
e status saranno tutte identificate come uguali.
Il default è la scelta Case sensitive.
Macro Expansion
La scelta può avvenire tra tre possibilità :
- Default
- On
- Off
Nel primo caso le macro sono espanse nel listato a seconda di un eventuale
statement di comando .
Nel secondo, le macro sono sempre espanse
Nel terzo non sono mai espanse; questa scelta è utile per ottenere listati meno
pesanti, sopratutto nel caso di impiego massiccio di macro, e quindi più
leggibili (supposto che si sappia cosa fa ogni macro).
Comunque la scelta Default è sempre la migliore e la selezione tra espansione e
non potrà essere fatta con uno statement nel listato sorgente dove e quando lo
si ritenga necessario.
Processor
Un range di selezione consente di scegliere il processore per cui si sta
effettuando l' assemblaggio, basandosi sui dati presenti nei files .INC. La
scelta Default solitamente è quella da usare in quanto è buona prassi indicare
in una linea iniziale del sorgente quale processore si intende usare e a quale .INC
fare riferimento. Ad esempio :
list p=16f876
; define processor
#include <p16f876.inc> ; specific variable definitions
specificano che l' eseguibile va compilato in base alle risorse e alle
caratteristiche del PIC 16F876. Se sono omesse queste righe, occorrerà
impostare nella selezione Processor il corretto tipo di PIC.
Mancando questa informazione, MPASM produrrà un errore.
La scelta migliore è quella di impostare il processore nel sorgente.
Extended Mode
La casella selezionabile consente di abilitare la modalità estesa di
assemblaggio .
Extra Option
In questa riga possono essere inseriti comandi addizionali che condizionano
l' assemblaggio. Per esempio, è possibile definire un simbolo
/DDebug /DTestVal=12
oppure cambiare il nome dei file di
uscita. Ad esempio chiamare diversamente dal defualt il file lista :
/LMYLIST.LST
Tab Size
Definisce a quanti spazi nel listato .LST darà origine un TAB inserito a
video nel testo sorgente. Lo scopo è quello di ottenere una presentazione
ordinata e quindi più facilmente leggibile. Il default è 8 spazi per TAB.
Save Setting on Exit
La finestra di MPASM, a meno che sia stata disabilitata la casella Save
Settings on Exit, "ricorda" le ultime impostazioni e, una volta
chiusa, le ripresenta alla successiva apertura. Questo è molto comodo se si
deve ripetere l' assemblaggio dello stesso file sorgente dopo aver corretto gli
errori.
Un tasto HELP fronisce un breve aiuto in linea.
un tasto EXIT abortisce il programma. Fino a che non si preme Exit, il programma è sempre attivo e si possono
modificare le selezioni e ripetere la compilazione.
Una volta completata la serie delle impostazioni, basterà premere il tasto
Assemble perchè il programma prelevi il file sorgente dal path indicato e
provveda alla generazione dei files di uscita.
Da notare che il sorgente non viene
minimamente alterato. Una finestra indicherà lo stato dell' operazione e il
risultato, con l' eventuale totale di errori.
I file richiesti in uscita, a meno di diversa indicazione, saranno depositati
nella stessa cartella in cui sta il file sorgente. Questo è piuttosto comodo e
sensato.
Però, lavorando su uno stesso sorgente ed applicando successive modifiche, si dovrà
avere l' avvertenza, se si vuole salvare la sequenza delle modifiche, di
nominare diversamente ogni passo successivo, ad esempio prova_1, prova_2, prova
_3, ecc., altrimenti la modifica del file prova con un testo sorgente diverso
sovrascriverà la precedente.
AVVERTENZA:
Fino a che il programma è attivo, ritiene il file sorgente in uso
e quindi, (per le regole di Windows e del buon senso)
non è possibile modificarlo o spostarlo o cancellarlo, con Windows che
dichiarerà un errore di condivisione. Prima sarà necessario
chiudere
MPASM
per poter modificare il file. |