Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
Le PseudoOperazioni di MASM |
SCHEDA n° 02 [ 20 di 26] |
|
|
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). |
|
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.
|
|
Scheda n° 02 | Pseudo Operazioni di MASM | |||||||
Scheda n° 02 - 20 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|