| 
      Sezione | 
      
       
   
    
      Indirizzi Base
    
    
    
      Registri Interni
    
      | 
    
| Capitolo 2 | 
| Gli strumenti di Lavoro | 
      EX2BIN 5/6 [52 di 87]  | 
 
  | 
| 
     | 
    
  | 
  
L'allocazione in memoria di questo eseguibile
    è di gran lunga meno impegnativa di 
    quella
    descritta per un programma 
     EXE; vediamo in dettaglio le  fasi di allocazione
     di
    un   COM da parte del  loader del
    Dos:
  
  | 
| 
     | 
    
  | 
  
| La presenza in memoria di un programma eseguibile produce alla fine il medesimo effetto, indipendentemente dalla sua natura. Di fatto se il compito affidato all'eseguibile è sostanzialmente molto complesso il file non può essere di tipo COM; per contro, se il file EXE è strutturato in modo semplice può (e conviene..) essere trasformato in un file di tipo COM. Con questa premessa vediamo le principali differenze tra le 2 versioni. | 
| 
     
  | 
  
| I COM usano sempre un solo segmento (64k), mentre gli EXE possono averne più di uno e possono quindi disporre di più memoria (fino a 256k); anche per questo i secondi hanno di norma dimensioni più grandi dei primi. | 
| 
     
  | 
  
| Gli EXE sono files rilocabili mentre i COM sono assoluti (non rilocabili). | 
| 
     
  | 
  
| Anche se entrambi usassero un solo segmento i COM sono più COMpatti degli EXE perché sono codice macchina puro (tutti e soli i bytes associati alle istruzioni) e non contengono le informazioni di controllo e la tabella necessarie al Dos per eseguire la rilocazione degli indirizzi di segmento; per questo sono caricati in memoria in modo più veloce. | 
| 
     
  | 
  
| Se nella cartella abbiamo entrambe le versioni il Sistema Operativo esegue sempre i COM. | 
| 
     
  | 
  
| Il Dos predispone in entrambi i tipo un Prefisso del Segmento di programma (PSP) e in entrambi obbliga i registri di segmento DS e ES a puntarlo. | 
| 
     
  | 
  
| NB: negli EXE il registro DS non sta puntando l'effettivo segmento dei dati (nei COM il discorso non ha senso: codice, dati e stack sono tutti nello stesso segmento). | 
| 
     
  | 
  
| Nei COM è necessario riservare l'area per i PSP con la direttiva ORG 100H, mentre negli EXE questa operazione non è necessaria, dato che il segmento di codice è posto in memoria in una posizione diversa da quella occupata dal segmento dei dati. | 
| 
     
  | 
  
| Nei COM il codice operativo della prima istruzione è sempre allocato all'indirizzo 0100H nell'unico segmento; negli EXE può invece trovarsi in qualunque punto della memoria. | 
  | 
| 
      
       |  
    Capitolo 2 | 
      
       | 
    EX2BIN 5/6 | 
    
    ![]()  | 
    
    ![]()  | 
    
    ![]()  | 
 ||
| 52 di 87 | 
      
  | 
    
| 
     
  | 
  
        
  | 
    
| 
      
         
        Home 
     | 
      
  | 
    |||||||
      
  | 
       
          
        Motore Ricerca  | 
      
  |