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

    

   Aggiornato 20 giugno 2006
    Gestione dei Dati - DUP, TYPE, LENGTH, SIZE
     
bulletNella definizione delle direttive DB, DW, DD, DQ e DT è apparso spesso l'operatore DUP: per la sua utilità merita una citazione estesa; come abbiamo visto consente di riservare spazio per una quantità n di dati del tipo indicato all'interno delle sue parentesi.

      

Suggerimento Riservare spazio in memoria è una necessità spesso ricorrente nella programmazione a basso livello; se un determinato programma ha bisogno di memorizzare dati (per esempio in arrivo dalla seriale) ha bisogno di un Buffer (cioè di un'area di memoria): il modo più pratico per definirlo (con una sola riga di programma) è proprio la direttiva DB insieme all'operatore DUP.

      

bulletSe le variabili sono definite con l'uso di DUP può tornare comodo imparare ad usare anche alcuni altri operatori in grado di fornire informazioni sulla variabile intesa in senso globale; per fissare le idee prendiamo ad esempio le 3 definizioni seguenti:

      

Dati01   DW 10 DUP (12ABH)      ;10 words   (tutte contenenti il valore 12ABH)
Buffer   DB 10 DUP (2AH)        ;10 bytes   (tutti contenenti '*')
Stack_   DB 30 DUP ('GIO_2001') ;30*8 bytes (contenenti 30 stringhe da 8 caratteri)

      

Con l'aiuto di alcuni operatori specifici possiamo assumere informazioni sulle 3 variabili:
 
bulletl'operatore TYPE restituisce il numero di bytes corrispondenti al tipo di variabile coinvolta (cioè 1 per DB, 2 per DW, 4 per DD, 8 per DQ e 10 per DT); può essere utilizzato anche con le etichette che rappresentano indirizzi di procedura, ma nel nostro caso abbiamo:

      

         MOV   AX,TYPE Dati01 ;lascia 2 in AX (contiene Words --> DW)
         MOV   BX,TYPE Buffer ;lascia 1 in BX (contiene Bytes --> DB)
         MOV   CX,TYPE Stack_ ;lascia 1 in CX (contiene Bytes --> DB)

      

bulletl'operatore LENGTH restituisce il numero di elementi dello stesso tipo (TYPE) definiti per la variabile che coinvolge l'operatore DUP; per certi versi è dedicata a questa modalità di assegnazione. Se si utilizza questo operatore in assegnazioni nelle quali non c'è DUP viene restituito il valore 1; nei nostri esempi, invece:

      

         MOV   AX,LENGTH Dati01 ;lascia 10 in AX (contiene 10 Words)
         MOV   BX,LENGTH Buffer ;lascia 10 in BX (contiene 10 Bytes)
         MOV   CX,LENGTH Stack_ ;lascia 30 in CX (contiene 30 Stringhe)

      

bulletl'operatore SIZE è forse il più utile: restituisce il numero di locazioni riservate dall'assemblatore per una determinata variabile; è dunque l'ideale per conoscere il numero di bytes di variabili definite con l'operatore DUP. In alternativa, per sapere questo numero è necessario moltiplicare il tipo (TYPE) di variabile coinvolta per il numero di elementi (LENGTH) di quel tipo; nei nostri esempi:

      

         MOV   AX,SIZE Dati01 ;lascia 20 in AX (10 elementi di tipo 2, Words)
         MOV   BX,SIZE Buffer ;lascia 10 in BX (10 elementi di tipo 1, Bytes)
         MOV   CX,SIZE Stack_ ;lascia 30 in CX (30 elementi di tipo 1, Bytes)
Possiamo notare che in realtà SIZE=TYPE*LENGTH, per cui nel caso di DB espressi sotto forma di stringa (come Stack_) la formula non vale (bisogna moltiplicare ulteriormente SIZE per il numero di caratteri della stringa).

    

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