| Naturalmente dopo averle estratte dal
programma se non si prendono provvedimenti non
saranno più reperibili dal compilatore che, alla prima
etichetta non trovata, segnalerà
errore (error A2105:
Expected: instruction, directive, or label). |
| Per renderle ancora visibili senza che siano fisicamente presenti di usa la
PseudoOperazione INCLUDE, che di occupa di cercare sul disco fisso un file di testo e di inserirlo pari pari nel punto in cui si esplicita questa richiesta; naturalmente se il file non viene trovato viene segnalato errore
(error A2116: Include file not
found: GIOBE.MAC) e la direttiva viene
ignorata. |
| La figura mostra le 3 righe di programma, sempre presenti nelle nostre
Matrici,
al fine di rendere disponibile la libreria di
Macro
Giobe.MAC(clicca
qui se vuoi scaricarla):
; MACRO UTILIZZATE DAL PROGRAMMA:
if1
include GIOBE.MAC ;(C:\ARCH-LAB\BIN\GIOBE.MAC)
endif |
|
| Naturalmente la direttiva INCLUDE
si presta ad "includere" qualsiasi cosa, per cui è
necessario essere ben certi di richiedere testi compatibili con il
nostro programma sorgente; potrebbe essere utile, per esempio, dividere programmi lunghi in più pezzi, ciascuno su un file diverso,
unendoli poi tra loro con questo comando.
|
| La presenza di IF1
(= se stai eseguendo la prima passata)
evita inutile lavoro al compilatore: durante la prima passata legge
il file che raccoglie le nostre MacroIstruzioni, annota le etichette
di ciascuna di esse nella Tabella dei Simboli,
e sostituisce le chiamate alle Macro con
i rispettivi corpi; nella seconda, se
non è presente IF1, aggiunge
al listato tutto il testo
contenuto nel file incluso, marcando con una C
ogni riga aggiunta, operazione del tutto inutile, sia perchè allunga a
dismisura il listato, sia perchè i compiti indispensabili sono già stati
assolti durante la prima passata. La figura mostra le righe (da 3 a 8, poche
solo perchè miniLib.Mac contiene solo quelle) che non sarebbero presenti se
avessimo usato IF1/ENDIF:
include miniLib.MAC
EXTRN BIOSmsg:NEAR
|
2
include miniLib.MAC
3 C M_msgN MACRO
Testo
4 C
PUSH SI
5 C
LEA SI,Testo
6 C
CALL BIOSmsg
7 C
POP SI
8 C
ENDM
10
EXTRN BIOSmsg:NEAR |
|
| Certamente IF1
ed ENDIF potranno tornare utili
anche in altre occasioni simili a questa, insieme ad altre pseudooperazioni
condizionali come IF e
ELSE; queste ed altre numerose altrenative sono
raccolte nella Tabella
Analitica e non verranno
trattate ulteriormente. |