| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Schede del Tutorial | 
| Le PseudoOperazioni di MASM | 
      SCHEDA n° 02 [ 20 di 26]  | 
   
  | 
| 
     | 
    
  | 
  
| La PseudoOperazione GROUP obbliga l'assemblatore a creare un unico SEGMENT a partire da 2 o più SEGMENT componenti; il nuovo nome del gruppo deve essere specificato davanti alla direttiva; naturalmente ciascuno dei segmenti componenti deve essere stato dichiarato in precedenza. | 
| 
     
  | 
      
| Tutte i simboli (etichette delle variabili e degli indirizzi) dei segmenti concorrenti saranno riferiti a partire dall'indirizzo iniziale del segmento complessivo; la possibilità di riunire con lo stesso nome vari pezzi di codice dello stesso tipo, in un'unica area di 64k, può essere veramente utile. | 
| 
     
  | 
      
| Il nome del GROUP può ovviamente essere utilizzato dalla direttiva ASSUME; vediamo un esempio di applicazione (notare che ORG è specificata solo nel primo segmento (_prog) e che entrambi fanno riferire (ASSUME) CS e DS al nuovo segmento alfa): | 
| 
     
  | 
      
| PAGE 66,132 alfa GROUP _prog,_prog1 _prog SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:alfa,DS:alfa ORG 0100H INIZIO: NOP _prog ENDS ;---------------------------------- _prog1 SEGMENT BYTE PUBLIC 'CODE' ASSUME CS:alfa,DS:alfa INIZIO: MOV AL,01 _prog1 ENDS ;---------------------------------- END INIZIO  | 
      Segments and Groups: ------------------------------------ Name Length Align Combine Class ALFA GROUP _PROG 0121 BYTE PUBLIC 'CODE' _PROG1 0002 BYTE PUBLIC 'CODE'  | 
      
| 
     | 
    
  | 
  
| La PseudoOperazione ORG consente di assegnare al contatore di locazioni un valore diverso da quello corrente; di solito questo contatore è espresso da un numero intero positivo di 2 bytes e tien conto della posizione relativa di ogni byte inserito nel segmento di codice o in un segmento di dati. | 
| 
     
  | 
      
| E' ragionevole pensare che inizi con il valore 0000H e che si incrementi, di volta in volta, della dimensione in bytes dell'oggetto che sta puntando (istruzione, variabile, ecc.). | 
| 
     
  | 
      
| La ragione per la quale è degno di nota sta nel fatto che il codice macchina di un programma intrasegmentale (come i nostri) deve essere strutturato per diventare un eseguibile di tipo COM; per questo deve partire dall'indirizzo 0100H (=256), dato che le prime 256 locazioni sono in questo caso destinate al sistema operativo (PSP, prefisso di segmento di programma). | 
| 
     | 
    
  | 
  
| La PseudoOperazione END fissa la fine del modulo da compilare; ogni cosa inserita sotto di essa viene ignorata; se si dimentica di scriverla il codice non viene compilato ed è segnalato errore (End of file encountered on input file). | 
| 
     
  | 
      
Pur essendo opzionale è opportuno dichiarare,
    subito dopo di essa, l'etichetta della prima
    istruzione del programma; quando i moduli (oggetti) da unire sono
    più di uno, solo il primo di essi (in genere il principale) definisce la
    sua prima istruzione con l'etichetta usata da END.
 
  | 
  | 
| 
      
       |     
    Scheda n° 02 | 
      
       | 
    Pseudo Operazioni di MASM | 
     | 
    
    
     | 
    
     | 
 ||
| Scheda n° 02 - 20 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |