Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Schede del Tutorial

Home » Programma il Computer » Tutorial Assembly

Le Schede del Tutorial

  Le PseudoOperazioni di MASM

SCHEDA n° 02 [ 14  di 26] 

    

    Gestione dei Dati - PUBLIC, EXTRN
     
bulletCi sono 2 importanti pseudoOperazioni destinate sia ai dati (variabili) che alle procedure, che consentono all'assemblatore di lasciare al linker utili indicazioni per la creazione del codice eseguibile:
bulletPUBLIC, rende un simbolo utilizzabile da ogni (codice) oggetto unito dal linker ; naturalmente il nome dell'etichetta dichiarata pubblica deve essere definito nel nostro programma sorgente.
bulletEXTRN: dobbiamo dichiarare esterne le etichette che si riferiscono a variabili o procedure non definite nel codice sorgente che stiamo scrivendo; di solito i bytes degli oggetti esterni sono assunti dal linker da librerie presenti sulla memoria di massa. Il compilatore annota comunque questi nomi nella sua Tabella dei Simboli, lasciando "vuoti" gli indirizzi ad essi relativi, cioè ponendo a 0 il valore dei 2 bytes che rappresentano l'etichetta.
Per evitare errori nella fase di collegamento (link) bisogna stare attenti a dichiarare con esattezza il tipo del simbolo dichiarato esterno, in accordo con la definizione data ad esso dal modulo che l'ha creata (es: BYTE per DB, WORD per DW, e così via); vediamo alcune dichiarazioni possibili e il modo con cui sono trattate da MASM:

 


EXTRN  X_Byte:BYTE ;var. a 8 bit
EXTRN  X_Word:WORD ;var. da 2 bytes
EXTRN X_DWord:DWORD;var. da 4 bytes
EXTRN X_Tbyte:TBYTE;var. da 10 bytes
EXTRN X_Numbr:ABS  ;num assoluto
EXTRN BIOScls:NEAR ;proc.intrasegment
EXTRN  RAMcls:FAR  ;proc.extrasegment
Name    Type   Value Attr
X_BYTE  V BYTE  0000 External
X_WORD  V WORD  0000 External
X_DWORD V DWORD 0000 External
X_TBYTE V TBYTE 0000 External
X_NUMBR NUMBER  0000 Communal
BIOSCLS L NEAR  0000 External
RAMCLS  L FAR   0000 External

      

bulletNB: per ogni simbolo dichiarato EXTRN dal nostro programma deve esserci, in qualche modulo di libreria, la definizione di una variabile (o di una procedura) dichiarata PUBLIC, e viceversa.
     
    Gestione dei Dati - LABEL
     
bulletLa pseudoOperazione LABEL non di uso molto frequente e permette di cambiare il tipo ad una o più variabili elencate subito dopo; i nuovi tipi possono essere BYTE, WORD, DWORD, QWORD, TBYTE, NEAR, FAR

      

Suggerimento In uso improprio per la pseudoIstruzione LABEL è utile per memorizzare in una etichetta l'indirizzo corrente di un determinato punto del programma, magari per eseguire dei test; l'esempio mostra come caricare SI con l'indirizzo dell'istruzione che fa questo:
        ................
sonoQui LABEL WORD
        LEA   SI,sonoQui

      

bulletIn pratica con questa direttiva si crea un nuovo simbolo (etichetta) con il quale si rende possibile indirizzare la variabile che segue in modo diverso dal suo, per esempio come byte invece di word; nello schema seguente vediamo come far diventare di tipo WORD la variabile ATTRIB, definita come byte (DB), o come ridefinire come BYTE la parte bassa della variabile RamVideo, definita come word (DW):

      

AttribW  LABEL  WORD
ATTRIB   DB     0FH


RamVid_B LABEL  BYTE
RamVideo DW     0B800H
MOV AL,CS:[ATTRIB]
MOV AX,CS:[ATTRIB]  [*]
MOV AX,CS:[AttribW]

MOV AX,CS:[RamVIDEO]
MOV AL,CS:[RamVIDEO][*]
MOV AL,CS:[RamVid_B]

[*] Possiamo notare che se tentiamo di  accedere alla variabile in modo diverso da quello definito per essa, senza la LABEL, viene segnalato errore (warning A4031: Operand types must match).
In realtà l'errore è warning perchè sia l'istruzione rossa che quella verde fanno comunque la stessa cosa, solo che la prima segnala errore e la seconda no; la definizione LABEL serve dunque per evitare la segnalazione d'errore.

    

Pagina Precedente Scheda n° 02 Pagina Successiva Pseudo Operazioni di MASM Torna al Menu delle Schede del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
Scheda n° 02 -  14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

    

SCHEDE » 1.Header EXE 2.PseudoOp MASM 3.Differenza tra Macro e Procedure
4.
Tabella Vettori 5.PSP 6.Stack 7.Istruzioni 80x86
8.La misura dell'Informazione 9.Numeri e Logica Binaria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati