|
 |
Le
PseudoOperazioni di MASM |
SCHEDA n° 02 [
20
di 26] |
 |
|
Gestione dei Segmenti - GROUP |
|
 | La PseudoOperazione
GROUP obbliga l'assemblatore a
creare un unico SEGMENT a partire
da 2 o più SEGMENT componenti;
il nuovo nome del gruppo deve essere
specificato davanti alla direttiva; naturalmente ciascuno dei segmenti
componenti deve essere stato dichiarato in precedenza. |
 | Tutte i simboli (etichette delle variabili e
degli indirizzi) dei segmenti concorrenti saranno riferiti a partire dall'indirizzo iniziale del segmento
complessivo; la possibilità di riunire con lo stesso nome vari pezzi di
codice dello stesso tipo, in un'unica area di 64k, può essere veramente
utile. |
 | Il nome del GROUP può
ovviamente essere utilizzato dalla direttiva ASSUME; vediamo un esempio di
applicazione (notare che ORG è
specificata solo nel primo segmento (_prog)
e che entrambi fanno riferire (ASSUME)
CS e DS al nuovo segmento alfa): |
PAGE 66,132
alfa GROUP
_prog,_prog1
_prog
SEGMENT BYTE PUBLIC 'CODE'
ASSUME
CS:alfa,DS:alfa
ORG 0100H
INIZIO: NOP
_prog
ENDS
;----------------------------------
_prog1
SEGMENT BYTE PUBLIC 'CODE'
ASSUME
CS:alfa,DS:alfa
INIZIO: MOV AL,01
_prog1
ENDS
;----------------------------------
END INIZIO
|
Segments and Groups:
------------------------------------
Name Length Align Combine Class
ALFA GROUP
_PROG 0121 BYTE PUBLIC 'CODE'
_PROG1 0002 BYTE PUBLIC 'CODE' |
 | La PseudoOperazione
ORG consente di assegnare al contatore
di locazioni un valore diverso da quello corrente; di solito
questo contatore è espresso da un numero intero positivo di 2 bytes e
tien conto della posizione relativa di ogni byte inserito nel segmento di
codice o in un segmento di dati. |
 | E' ragionevole pensare che inizi con il valore
0000H e che si incrementi, di volta in volta, della dimensione in bytes
dell'oggetto che sta puntando (istruzione, variabile, ecc.). |
 | La ragione per la quale è degno di nota sta
nel fatto che il codice macchina di un programma
intrasegmentale (come i nostri) deve essere strutturato per
diventare un eseguibile di tipo COM; per
questo deve partire dall'indirizzo
0100H
(=256), dato che le prime 256 locazioni sono in questo caso destinate al
sistema operativo (PSP, prefisso
di segmento di programma). |
 |
|
Gestione del Programma - END |
|
 | La PseudoOperazione
END fissa la fine
del modulo da compilare; ogni cosa inserita sotto di essa
viene ignorata; se si dimentica di scriverla il codice non
viene compilato ed è segnalato errore (End of file encountered on input file). |
 | Pur essendo opzionale è opportuno dichiarare,
subito dopo di essa, l'etichetta della prima
istruzione del programma; quando i moduli (oggetti) da unire sono
più di uno, solo il primo di essi (in genere il principale) definisce la
sua prima istruzione con l'etichetta usata da END.
ORG 0100H
INIZIO: JMP MAIN
.........
END INIZIO
|
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|