Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Le PseudoOperazioni di MASM |
SCHEDA n° 02 [ 07 di 26] |
|
|
Vediamo ora di sottolineare un possibile problema di sintassi: quando nel corpo della macro sono presenti etichette d'indirizzo è necessario dichiarale prima del corpo con la pseudoOperazione LOCAL. | |
Sebbene la riga contenente la Macroistruzione, tra le altre del programma, dia la sensazione di eleganza e compattezza, non bisogna dimenticare l'assemblatore la sostituirà con le istruzioni del suo corpo ogni volta che viene chiamata in causa (anche molte volte nell'ambito del programma sorgente). |
|
Per mostrare questo effetto ho creati l'inedita Macro
M_Test: nell'esempio seguente la viene
chiamata 2 volte: osserviamo (a destra, in forma ridotta) come MASM
ha codificato il listato:
| |||||
Per la presenza di LOCAL, l'etichetta originaria mmm1 è stata sostituita con un simbolo fatto con 2 punti di domanda e un numero progressivo, ??0000; il numero viene incrementato ogni volta che l'assemblatore deve sostituire l'etichetta di una Macro, indipendentemente dal suo nome corrente e dalla Macro che la utilizza. | |||||
Così, nell'esempio, la medesima etichetta mmm1 è stata chiamata ??0000 la prima volta e ??0001 la seconda; in questo modo l'assemblatore rende unici i simboli a riferimenti dello stesso tipo. |
|
Se non avessimo dichiarato LOCAL mmm1 il compilatore, costretto a scrivere 2 volte il testo della Macro esattamente come è stato definito, già nella prima passata avrebbe trovato l'etichetta mmm1 scritta 2 volte (segnalando error A2004: Redefinition of symbol), mentre nella seconda passata avrebbe segnalato 2 errori (error A2026: Reference to multidefined symbol e error A2005: Symbol is multidefined: MMM1) ogni volta che avrebbe incontrato mmm1 (cioè 2 volte...). |
|
|
A margine della discussione delle PseudoOperazioni
destinate alla Gestione delle MacroIstruzioni, sebbene di interesse e
utilizzo relativamente scarso, ne citiamo alcune create per il controllo
dei commenti eventualmente scritti nel corpo della Macro:
|
|
L'azione prodotta dalle 3 direttive sulle
chiamate della Macro M_Dato si
vede chiaramente dal listato seguente:
|
|
Scheda n° 02 | Pseudo Operazioni di MASM | |||||||
Scheda n° 02 - 07 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|