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

LINKER 4/10 [40 di 87] 

    

    A cosa serve il file MAP? 
     
bulletQuesto file può tornar comodo nella fase di controllo del programma; è un file di testo e perciò può essere letto con un editor o semplicemente con il comando TYPE del Dos. Osservando l'immagine visualizzata sul monitor, per i nostri 2 programmi pilota, notiamo che in entrambi viene ribadito l'errore di collegamento (che spiegheremo nella pagina degli errori), seguito dall'elenco dei segmenti definiti nel codice sorgente (nel nostro caso uno solo, di nome _PROG e di classe CODE) con l'indirizzo del primo byte (Start), quello dell'ultimo (Stop) e con il numero di bytes del programma eseguibile (Length):

      

C:\ARCH-LAB\LAVORO> type prova.map
LINK : warning L4021: no stack segment

Start   Stop   Length  Name   Class
00000H  0010DH 0010EH  _PROG  CODE

Program entry point at 0000:0100

    

C:\ARCH-LAB\LAVORO> type prova1.map  
LINK : warning L4021: no stack segment

Start    Stop   Length  Name   Class
00000H   00118H 00119H  _PROG  CODE

Program entry point at 0000:0100

      

bulletLa dimensione (Length) della parte eseguibile del programma EXE esprime, naturalmente, il totale della lunghezza del Main program e delle sue procedure; questa precisazione ci aiuta a capire in che modo lavora il Linker.

      

bulletNelle pagine seguenti indagheremo a fondo su questo argomento, rapportando le informazioni dei files MAP con quelle fornite dall'effettivo codice macchina prodotto.

      

bulletNaturalmente il file MAP è molto più significativo se i segmenti definiti sono più di uno, come nel caso classico di un programma EXE; gli esempi che seguono mostrano il resoconto di questo file in funzione delle scelte di allineamento fatte per ciascun segmento nel programma sorgente:

      

STACK   SEGMENT BYTE STACK 'STACK'
dataSG  SEGMENT BYTE PUBLIC 'DATA'
_prog   SEGMENT BYTE PUBLIC 'CODE'

Start  Stop   Length  Name   Class
00000H 0009FH 000A0H  STACK  STACK
000A0H 000B1H 00012H  DATASG DATA
000B2H 000FBH 0004AH  _PROG  CODE

Program entry point at 000B:0002
STACK   SEGMENT PARA STACK 'STACK'
dataSG  SEGMENT PARA PUBLIC 'DATA'
_prog   SEGMENT PARA PUBLIC 'CODE'

Start  Stop   Length  Name   Class
00000H 0009FH 000A0H  STACK  STACK
000A0H 000B1H 00012H  DATASG DATA
000C0H 00109H 0004AH  _PROG  CODE
 
Program entry point at 000C:0000

    

STACK   SEGMENT WORD STACK 'STACK'
dataSG  SEGMENT WORD PUBLIC 'DATA'
_prog   SEGMENT WORD PUBLIC 'CODE'

Start  Stop   Length  Name   Class
00000H 0009FH 000A0H  STACK  STACK
000A0H 000B1H 00012H  DATASG DATA
000B2H 000FBH 0004AH  _PROG  CODE

Program entry point at 000B:0002
STACK   SEGMENT PAGE STACK 'STACK'
dataSG  SEGMENT PAGE PUBLIC 'DATA'
_prog   SEGMENT PAGE PUBLIC 'CODE'

Start  Stop   Length  Name   Class
00000H 0009FH 000A0H  STACK  STACK
00100H 00111H 00012H  DATASG DATA
00200H 00249H 0004AH  _PROG  CODE

Program entry point at 0020:0000

      

bulletIn ogni caso la prima 00000H); possiamo notare che:
bulletse l'allineamento scelto è il byte non viene sciupato alcun bytes (ogni segmento è consecutivo al precedente).
bulletla situazione è identica alla precedente con allineamento alla word  ma si tratta di un caso: la dimensione di ciascun segmento è pari per cui l'inizio allineato alla locazione pari successiva è scontato.
bulletse l'allineamento è al paragrafo o alla pagina tutti i segmenti iniziano ad indirizzi "tondi", al netto rispettivamente, dei 16 e dei 256 bytes, cioè all'inizio del paragrafo o della pagina successiva.
bulletDa notare che, in ogni caso, la locazione iniziale (entry-point) del programma è sempre all'inizio del segmento di codice: l'indirizzo fisico (per esempio 000B2H o 000C0H) viene sempre proposto in forma logica (000B:0002 o 000C:0000).

    

Pagina Precedente Capitolo 2 Pagina Successiva LINKER 4/10   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
40 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