|
 |
Gli strumenti di Lavoro |
ASSEMBLATORE 8/17
[27 di 87] |
 |
|
Cosa contiene il file LST? (Analisi del codice assemblato) |
|
 | Il file listato è certamente quello più
utile, dei 2 opzionali offerti dall’Assemblatore MASM;
si tratta di un file di testo ASCII con estensione
LST, simile al programma sorgente da cui prende
origine.
|
 | La struttura del file
LST si articola in 2
parti ben distinte:
 | la prima offre un interessante modo per
vedere come l'assemblatore organizza e traduce il codice assembly che
gli è stato affidato; è quella più voluminosa ed è organizzata per pagine consecutive, numerate ed intestate
singolarmente. |
 | la seconda è la famosa Tavola
dei Simboli, creata dall'assemblatore nella prima
passata. |
|
 | La prima parte
è una versione estesa del file ASM: ai 4 campi originali (etichetta,
codice operativo, operandi e commento) ne sono aggiunti altri 3, a
sinistra dei precedenti:
 | Il primo campo
mostra il numero progressivo di ogni riga
del codice sorgente; ad esso fanno riferimento tutti i files generati da
MASM ed è utile per localizzare ogni parte del codice, specialmente in
presenza d'errori durante la compilazione. |
 | la seconda
colonna con l’indirizzo di Offset
(rispetto al segmento di Codice) in cui verranno caricati i bytes del codice macchina del
programma; naturalmente la parte Segment dell'indirizzo è stabilita dal
loader del Sistema Operativo, al momento dell'allocazione del programma
in memoria, nel primo segmento libero. Anche questa parte di
LST è
interessante per conoscere quali saranno i valori che il processore
metterà di volta in volta nel proprio Program Counter. |
 | la terza
colonna mostra il codice macchina
generato per ciascuna istruzione; la sua analisi, sorretta sempre
da spirito di curiosità, ti può aiutare a memorizzare alcuni codici
operativi importanti come CDH (per
INT)
E8H (per
CALL) o
C3H (per
RET):
la loro conoscenza cura nella terza colonna. |
 | la parte
rimanente, a destra, è esattamente la copia del testo fornito
in ingresso nel file ASM. |
|
 | Vediamo in dettaglio il contenuto di questa
parte dei 2 files Prova.LST
e Prova1.LST
(puoi scaricarli o leggerli cliccando sui link).
Microsoft (R) Macro Assembler Version 5.10 8/15/1
Page 1-1
1 0000 _prog SEGMENT BYTE PUBLIC 'CODE'
2 ASSUME CS:_prog,DS:_prog
3 0100 ORG 0100H
4 0100 B4 00 INIZIO: MOV AH,00H
;Pulisci lo schermo
5 0102 B0 03 MOV
AL,03H ;(ClearScreen)
6 0104 CD 10 INT 10H
7 0106 B4 00 MOV
AH,00H ;Aspetta la pressione
8 0108 CD 16 INT 16H ;di un tasto
9 010A B4 4C MOV
AH,4CH ;Torna al dos
10 010C CD 21
INT 21H
11 010E _prog ENDS
12 END
INIZIO |
Microsoft (R) Macro Assembler Version 5.10
8/15/1 Page 1-1
1 0000 _prog SEGMENT BYTE PUBLIC 'CODE'
2 ASSUME CS:_prog,DS:_prog
3 0100 ORG 0100H
4 0100 EB 0D 90 INIZIO: JMP Main
5
6 0103 B4 00 KeyWait:MOV
AH,00H ;Aspetta la pressione
7 0105 CD 16
INT 16H ;di un tasto
8 0107 C3
RET
9
10 0108 B4 00 BiosCls:MOV
AH,00H ;Pulisci lo schermo
11 010A B0 03
MOV AL,03H ;(ClearScreen)
12 010C CD 10
INT 10H
13 010E C3
RET
14
15 010F E8 0108 R Main: CALL BiosCls
16 0112 E8 0103 R
CALL KeyWait
17 0115 B4 4C
MOV AH,4CH ;Torna al dos
18 0117 CD 21
INT 21H
19
20 0119
_prog ENDS
21
END INIZIO |
|
 |
Memorizza
i codici operativi delle principali istruzioni (per esempio CDH
per INT, E8H per CALL, C3H per RET)
e osserva in che modo vengono tradotti gli operandi.
Ti aiuterà a capire meglio il processore con cui lavori e può
tornare utile per localizzare a colpo d'occhio le istruzioni
tra i bytes di un codice macchina (COM) che desideri
analizzare. |
 | Il compilatore MASM organizza
il file LST in un
documento stampabile di più pagine consecutive, ciascuna di 58
righe da 80 caratteri per riga, numerate ed intestate
singolarmente; di solito utilizza una intestazione standard
(guarda la prima riga
di ognuna delle tabelle precedenti) ma è possibile personalizzarla con
l'aggiunta di altre 2 righe (titolo e sottotitolo)
purché il sorgente
abbia, all'inizio, le 2 pseudooperazioni
opzionali, TITLE e
SUBTTL. |
 | Consulta la scheda
ad esse dedicata: ti insegna a
servirti con profitto di queste Pseudo Istruzioni
di MASM, sollevando anche un
interessante problema di incompatibilità tra gli 80
caratteri per riga predisposti automaticamente e i 120
caratteri effettivamente necessari, dopo che MASM ha aggiunto le 40 colonne, sulla sinistra del testo del nostro sorgente, per poter documentare le informazioni descritte all'inizio. Ti verrà anche suggerito il modo di risolvere l'inghippo con la
pseudooperazione
PAGE.
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|