Passa al contenuto principale

Sezione .data

Un programma assembler è tipicamente diviso in sezione .data, dove vengono allocato spazio in memoria a disposizione del programma, e sezione .text, dove viene indicata la sequenza di istruzione che compone il programma.

La sezione data è tipicamente composta da una serie di dichiarazioni nella forma nomeVariabile: .tipo <parametri di inizializzazione>. Alcuni esempi:

.data
var1: .long 5
var2: .byte 0x2d, 0x01
str: .asciz "Una stringa"

Ciascuna direttiva non fa che allocare uno o più blocchi di memoria contigui della dimensione richiesta e con il contenuto iniziale richiesto.

Ciascuna label non è che un indirizzo al primo byte di tale blocco contiguo di memoria. Dato che l'architettura x86 è little endian, tale primo byte sarà il meno significativo.

Di seguito una tabella dei tipi mostrati nel corso.

TipoNotazioneDescrizione
byte.byte V1 [, V2...]Alloca uno o più byte, inizializzati con i valori forniti.
word.word V1 [, V2...]Alloca uno o più word (2 byte), inizializzati con i valori forniti.
long.long V1 [, V2...]Alloca uno o più long (4 byte), inizializzati con i valori forniti.
fill.fill n, l, vAlloca n locazioni di l byte ciascuno e inizializzati a v. l e v si possono omettere, di default sono 1 e 0.
ascii.ascii "str"Alloca la stringa str, 1 byte per carattere.
asciz.asciz "str"Alloca la stringa str, 1 byte per carattere, aggiungendo un byte 0x00 in fondo.

L'assemblatore supporta anche altre direttive ed usi più complessi. Per maggiori informazioni, la documentazione ufficiale è qui.