Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Capitolo 2

Home » Programma il Computer » Tutorial Assembly

Capitolo 2 - Gli strumenti di lavoro

  Gli strumenti di Lavoro

EX2BIN 5/6 [52 di 87] 

    

    Come viene trattato il file COM dal Loader del Dos?
     
bulletL'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:
bulletlocalizza il più grande blocco di memoria libero in memoria Ram, di dimensioni almeno 258 bytes più grandi della dimensione del file COM.
bulletcrea nelle prime 256 locazioni un Prefisso di Segmento di programma (PSP).
bulletcopia tutto il contenuto del file COM subito dopo il PSP.
bulletcarica il valore del segmento associato all'area di memoria prescelta in tutti e 4 i registri di segmento DS, PSP; i 4 segmenti sono dunque fisicamente sovrapposti.
bulletcarica il registro SP con il valore FFFEH, in modo da puntare il penultimo byte del segmento.
bulletcarica negli ultimi 2 bytes del segmento il valore 0000H; si tratta di una contorta azione di sicurezza: poiché il puntatore di stack sta puntando proprio questi 2 bytes un'eventuale esecuzione dell'istruzione RET, mentre il programma sta girando, forza questo valore nell'Instruction Pointer, IP, obbligandolo ad eseguire l'istruzione INT 20H, che chiude la sessione Dos.  Ulteriori dettagli sono disponibili nella descrizione della prima voce del PSP.
bulletcarica il registro IP con il valore 0100H, tipico entry-point dei programmi COM
bulletquando tutto questo è stato portato a termine cede il controllo al codice macchina del file COM e il programma comincia a girare in memoria...
   
    Differenze tra file COM e file EXE
     
bullet 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.

      

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

      

bulletGli EXE sono files rilocabili mentre i COM sono assoluti (non rilocabili).

      

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

      

bulletSe nella cartella abbiamo entrambe le versioni il Sistema Operativo esegue sempre i COM.

      

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

      

bulletNB: 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).

      

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

      

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

    

Pagina Precedente Capitolo 2 Pagina Successiva EX2BIN 5/6   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
52 di 87
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

    

CAP 2 » 1. Catena di Compilazione 2. Editor 3. Assemblatore 4. Linker 5. Exe2Bin
6.
Ambiente di Lavoro 7. Gestore d'Ambiente Macro 8. Gestore d'Archivi OG
9. Matrici per i Programmi Sorgente 10. Gestore di Librerie Lib 
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati