JavascriptProva

martedì 29 maggio 2012

Dissezione del file oggetto: il record LNAMES (96H)

Riporto ancora qui il mio schema:
THEADR:80 09 00 07 6D 69 6F 2E-61 73 6D BC
LNAMES:96 07 00 00 04 54 45 58 54 1A
SEGDEF:98 07-00 60 1B 00 02 01 01 E2
LEDATA:A0 1F 00 01 00 00 EB 02 FA FA B4 00 B0 03 CD 10 2E A1 00 00 2E 8B 1E 00 00 B4 00 CD 16 B4 4C CD 21 F0
FIXUPP:9C 0D 00 C4 0C 50-01 02 00 C4 11 50 01 02 00 0C
MODEND:8A 06 00 C1 50 01-00 00 5E
Dopo i primi tre bytes "rituali", che esprimono il tipo di record e la sua lunghezza, prendiamo il corpo del record.
Esso è fatto di un byte che esprime la lunghezza del nome del segmento e un numero variabile di bytes, che ne esprimono il nome, ambedue questi campi ripetuti per il numero di segmenti che il programma comprende, con uno fisso iniziale di lunghezza zero.

Ne faccio un codice colore:
LNAMES:96 07 00 00 04 54 45 58 54 1A
C'è un primo byte, marcato in celeste, che esprime la lunghezza di una stringa di lunghezza zero, quindi un byte, marcato in celeste, che esprime la lunghezza della stringa contenente il nome dell'unico segmento, marcato in verde: TEXT. Adesso ho scritto rapidamente un sorgentino con due segmenti, e prendo il record LNAMES:
96 0C 00 00 04 44 41 54 49 04 54 45 58 54 EF
. Qui la sequenza lunghezza della stringa-stringa con il nome del segmento è ripetuta due volte: per il segmento DATI e per il segmento TEXT il cui nome appare nei bytes marcati in verde.
Il record LNAMES, espresso dal numero 96H, è un semplice elenco dei nomi dei segmenti di cui è composto il programma.

Nessun commento:

Posta un commento