|
 |
Le
PseudoOperazioni di MASM |
SCHEDA n° 02 [
16
di 26] |
 |
|
Gestione dei Segmenti - SEGMENT,
ENDS |
|
 | Le PseudoOperazioni
che illustriamo ora sono indispensabili per
craere un programma sorgente ASM; SEGMENT
serve per definire l'inizio di un Segmento e la ENDS
ha il compito di indicare all'assemblatore dove il segmento finisce; è
necessario associare un nome, lo stesso per entrambe le direttive: nei
nostri esempi si usa il nome _prog:
_prog
SEGMENT
; qui vanno inserite le istruzioni
_prog ENDS |
|
 | Queste direttive devono essere sempre presenti
in coppia, altrimenti viene segnalato errore:
 | se manca la prima
error A2000: Block nesting
error,
Severe Error (ricorda questo errore: se si
presenta sai che hai dimenticato la direttiva SEGMENT); ogni istruzione
viene marcata inoltre con errore error A2024: Segment parameters are
changed,
Severe Error; e, naturalmente, non avendo
definito l'etichetta _prog viene segnalato anche error A2009: Symbol not
defined: _PROG. |
 | se manca la seconda viene
segnalato errore Open
segments: _PROG, 1 Severe Errors). |
|
 | La direttiva SEGMENT specifica un'area di memoria
di 64 kBytes, contenente informazioni dello stesso tipo, alle quali verrà fatto puntare uno dei registri di segmento,
CS (Code Segment),
DS (Data Segment),
ES (Extra Segment) o
SS (Stack Segment);
tutte le le istruzioni e
i dati contenuti in un segmento sono indirizzati con riferimento a questo registro,
a partire dalla locazione iniziale (per esempio
CS:0000H). |
 | La dichiarazione di più segmenti con lo
stesso nome è ammessa: in questo caso l'assemblatore provvede ad unire i
vari pezzi in un unico segmento, sebbene questa necessità sia poco
probabile all'interno del medesimo sorgente (e più sentita a livello
linker,
quando dovrà unire il codice eseguibile con le
procedure, entrambi
certamente appartenenti al segmento di codice). |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|