| Cominciamo con i dati a 8 bit
(byte), definiti cioè con DB
(Define Byte); nonostante l'apparenza l'assemblatore riserva per essi
uno o più bytes di memoria, di solito inizializzati con valori che rappresentano
numeri interi, stringhe
con uno o più caratteri, espressioni costanti (come 5*2):
ATTRIB DB 0FH ;numero esadecimale
datoB DB
15
;numero decimale
binarioB DB 00001111B
;numero binario
ignotoB DB ?
;dato non inizializzato
;----------------------------------------
testo DB 'Esempio di testo',00H ;stringa Ascii
;----------------------------------------
tabella DB 01,' Lunedì',00H ;
DB 03,'Mercoledì',00H
; tabella
DB 02,' Martedì',00H
;
tabellaB DB 01H, 02H, 03H, 04H ; 4 dati a 8 bit
;----------------------------------------
areaZerB DB 16 DUP (00H) ;16 bytes a 0
areaTxt DB 16 DUP ('GIO_2001');16*8 caratteri |
| i primi 3 sono esprimono lo stesso numero
in esadecimale, in decimale e in binario; notare la H
finale nel primo e la B finale nel
terzo, mentre nel secondo non è necessario aggiungere nulla. |
| il dato successivo è certamente a 8 bit
ma il suo valore non è inizializzato:
spetta alle istruzioni del programma dare valore iniziale al contenuto
di questa locazione, a dimostrazione del fatto che tutti i dati che
stiamo descrivendo sono sostanzialmente variabili. |
| l'etichetta testo
mostra una stringa terminata con un byte a 0:
anche le sequenze di caratteri Ascii sono dunque di tipo byte: ciascun
carattere è infatti associato ad un byte. La stringa può essere lunga
fino alla fine della linea. |
| l'etichetta tabella
mostra la tecnica migliore per definire serie
di dati, anche costituite, come in questo caso, da più tipi;
naturalmente nel caso di una sequenza di numeri (come per tabellaB)
la dimensione per ciascuno di essi è 8bit. Da notare la necessità di
definire solo un'etichetta: l'inizio di ogni "voce"
delle tabelle è facilmente ricostruibile con una semplice somma. Da
notare anche che gli elementi di ogni riga sono separati
da una virgola. |
| le 2 definizioni successive sono
particolarmente degne di nota per la presenza dell'operatore
DUP: all'etichetta areaZero
corrisponde una zona di 16 bytes a 0 e a areaTxt
un'area di 128 bytes contenente 16 volte gli otto bytes della stringa
Ascii 'GIO_2001. |
|