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 [ 05  di 26] 

    

    Gestione dei Simboli - EQU (segue
     
bulletGli alias creati con la direttiva EQU si possono riferire anche al nome (simbolo) di una variabile definita nella zona dati del programma: in questo caso l'assemblatore sostituirà l'alias con il valore della variabile (cioè con il contenuto della locazione di nome alias).
bulletGli esempi che seguono illustrano questa tecnica e mostrano anche un bizzarro modo di usare EQU: è possibile creare alias anche di una parola chiave, come il codice mnemonico di una istruzione (sebbene la cosa sembri decisamente discutibile...):

      

; COSTANTI PER IL PROGRAMMA:
       
opCode1   EQU MOV
         opCode2   EQU ADD
         datoByte  EQU ATTRIB
         datoWord  EQU PAROLA

------------------------------
INIZIO: 
JMP    Main
------------------------------
ATTRIB   DB     0FH
PAROLA   DW     1234H

------------------------------
Main:    MOV     AL,datoByte
         opCode1 AL,datoByte
         ADD     AH,AL
         opCode2 AH,AL
         MOV     SI,datoWord
         opCode1 SI,datoWord





------------- -------------------
0100 EB0490   JMP 0106
---- -------- -------------------
0103 0F       DB 0FH
0104 3412     DW 1234H
---- -------- -------------------
0106 A00301   MOV AL,[0103]
0109 A00301   MOV AL,[0103]
010C 02E0     ADD AH,AL
010E 02E0     ADD AH,AL
0110 8B360401 MOV SI,[0104]
0114 8B360401 MOV SI,[0104]
----------------------------------
Symbols Name  Type    Value  Attr
ATTRIB . . .  L BYTE  0103   _PROG
DATOBYTE . .  ALIAS   ATTRIB
DATOWORD . .  ALIAS   PAROLA

INIZIO . . . .L NEAR  0100   _PROG
OPCODE1 . . . TEXT    MOV
OPCODE2 . . . TEXT    ADD
PAROLA . . .  L WORD  0104   _PROG

      

bulletL'analisi dei risultati (in Debug) mostra come  opCode1 sia stato assunto come MOV e compilato con il medesimo codice operativo (A0), così come opCode2 è stato assunto come ADD e compilato con suo stesso codice operativo (02); in entrambi i casi questi simboli sono ritenuti di tipo TEXT.

      

bulletI 2 alias riferiti ai nomi delle 2 variabili (datoByte per ATTRIB e datoWord per PAROLA) sono perfettamente intercambiabili e il codice prodotto è lo stesso: se andiamo ad eseguire il programma dopo le prime 2 istruzioni in AL ci sarà 0FH (valore datoByte o ATTRIB) e dopo le ultime 2 in SI ci sarà 1234H (valore di datoWord o PAROLA).
     
    Gestione dei Simboli - =
     
bulletLa direttiva = è simile, per l'effetto prodotto, alla EQU, ma è gestita dall'assemblatore in modo assolutamente diverso: mentre con la seconda non è più possibile cambiare il valore associato ad un simbolo, la = assegna ancora, la prima volta, un valore al simbolo ma permette di ridefinirlo in ogni momento!

      

bulletIl simbolo viene ancora sostituito dall'assemblatore con un numero compreso tra 0 e 65535 (cioè con un valore numerico a 16 bit).
bulletL'effetto di questa importante e utile direttiva può essere valutato osservando il codice sorgente (a sinistra) e il resoconto fornito dal listato (a destra):

      

; COSTANTI PER IL PROGRAMMA:
         alfa=12H
---------------------------
INIZIO:  MOV    AL,alfa
         alfa=10H
         MOV    AL,alfa
         alfa=13H
         MOV    AL,alfa
1          ; COSTANTI PER IL PROGRAMMA:
2 =0012               alfa = 12H 
--------------------------------------
7  0100 B0 12 INIZIO: MOV   AL,alfa
8 =0010               alfa = 10H
9  0102 B0 10         MOV   AL,alfa
10=0013               alfa = 13H
11 0104 B0 13         MOV   AL,alfa
--------------------------------------
Symbols Name  Type     Value     Attr
ALFA . . . .  NUMBER   0013 

      

bulletPossiamo notare che l'assemblatore compila il codice in funzione del valore corrente di alfa (nelle istruzioni MOV AL,alfa, insieme al codice operativo B0H mette prima 12H, 10H e 13H), mentre l'ultimo valore di alfa, per il listato (e quindi per MASM) è l'ultimo assegnato (13H).

    

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 -  05
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