|
 |
Le
PseudoOperazioni di MASM |
SCHEDA n° 02 [
09
di 26] |
 |
|
Gestione dei Dati - dove e come definire i dati |
|
 | Tra le più importanti pseudoOperazioni,
indispensabili nella normale programmazione, ci sono quelle che aiutano
a definire i dati di un programma; in quelli di grande
dimensione (tipo Exe)
viene definito per essi un apposito segmento (Data Segment), mentre in quelli
intrasegmentali (tipo Com) i dati
sono inseriti tra le istruzioni del codice eseguibile. |
 | Un acuto osservatore potrebbe subito
sottolineare che la presenza di dati tra il
codice eseguibile potrebbe
indurre il processore ad eseguire anche
i bytes dei primi, non certo differenti da quelli del secondo; di fatto il
rischio è reale per cui di solito si adotta la seguente tecnica indiscutibile. |
 | L'etica del programmatore suggerisce di inserire
i dati (bytes non eseguibili) tra un
JMP Main
e l'etichetta
Main:,
a partire dalla quale si snocciola tutta la sequenza dei bytes eseguibili,
associati alle effettive istruzioni (naturalmente l'etichetta Main
è solo un esempio). |
 | Ogni sorgente per programma di tipo Com usa questa
tecnica; eccone un
esempio:
page 66,132
PUBLIC ATTRIB
_prog SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:_prog,DS:_prog
ORG 0100H
INIZIO: JMP Main
--------[zona dei Dati]---------------
ATTRIB
DB 0FH ;numero esadecimale
testo DB 'Esempio di testo', 00H
--------------------------------------
Main: LEA SI,testo
MOV AL,CS:[ATTRIB]
MOV AH,4CH
INT 21H
_prog ENDS
END INIZIO |
|
 | Entriamo ora nel merito: i dati
di un programma si possono catalogare per dimensione e per tipo; spesso
(ma non sempre) ad essi è associata una etichetta,
con lo scopo di associare un nome
al dato stesso.
|
 |
L'etichetta
di un dato rappresenta l'indirizzo della locazione (variabile)
che lo
contiene (se il dato è a 8bit) o della locazione che contiene il
meno significativo dei suoi bytes (se il dato è più grande) |
 |
Non
dimenticare che la memoria viene gestita un byte alla volta, per cui
un dato a sedici bit viene memorizzato sempre con la tecnica
Lo-Hi, cioè prima il byte meno significativo (Low)
e poi quello più significativo (High). |
 | La dimensione dei dati è prefissata proprio
dalle possibili pseudoOperazioni;
nell'ambito di ciascuna di esse è poi possibile distinguere diversi tipi di
dato. Gli esempi che seguono sono certamente più chiari di ogni parola. |
 |
Se
puoi segui con attenzione gli esempi proposti: sono molto utili per
imparare a programmare in scioltezza; l'ideale è provare a scrivere
e compilare dei finti programmi per vedere (con Debug)
cosa viene caricato in memoria. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|