| 
      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  | 
      
  |