Menu
Coddy logo textTech

La sezione .data

Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 23 di 45.

Nel capitolo 2, hai caricato valori dalla memoria e memorizzato valori in memoria. Ma da dove proveniva quella memoria? Chi ha creato num1, num2 e result?

La risposta è la sezione .data. È qui che crei i tuoi dati in memoria.

Che cos'è la sezione .data?

La sezione .data è una parte del tuo programma assembly in cui definisci i dati che verranno memorizzati in memoria prima che il tuo programma venga eseguito.

Sintassi:

section .data
    ; Le definizioni dei dati vanno qui

Perché ti serve:

Senza la sezione .dataCon la sezione .data
Non hai dati con cui lavorarePuoi creare numeri, stringhe e variabili
Gli indirizzi di memoria sono sconosciutiPuoi usare etichette come myNumber o message
Non puoi testare il tuo codicePuoi caricare e memorizzare i dati che hai creato

Un semplice esempio:

section .data
    age db 25           ; Crea un byte chiamato "age" con valore 25
    price dw 1000       ; Crea una word chiamata "price" con valore 1000
    name db 'Bob'       ; Crea una stringa chiamata "name" con le lettere B, o, b

Dove va inserito nei tuoi file:

Ricorda il modello a due file del Capitolo 0:

FileContenuto
data.asmsection .data con le tue definizioni dei dati
main.asm%include "data.asm" seguito da section .text con il tuo codice

Cosa succede quando il programma viene eseguito:

  1. Il sistema operativo carica il programma in memoria
  2. Legge la sezione .data e colloca i dati a indirizzi di memoria specifici
  1. Le tue etichette (age, price, name) diventano indirizzi
  2. Ora il tuo codice può accedere a questi indirizzi usando [age], [price], [name]

Regole importanti:

RegolaSpiegazione
Una sezione .data per programmaMetti tutti i dati in un unico posto
Le etichette devono essere univocheNon puoi avere due etichette age
I dati vengono creati prima dell'esecuzione del codiceSono pronti per essere usati quando inizia _start

Nelle prossime lezioni imparerai a definire diversi tipi di dati usando db, dw, dd e dq

challenge icon

Sfida

Scrivi il codice nel file data.asm per:

  1. Creare la sezione .data
  2. Creare un byte chiamato count con il valore 5

Provalo tu

%include "data.asm"

section .text
    global _start

_start:
    ; Carica il valore di count in al
    mov al, [count]
    
    ; Salvalo per stamparlo
    mov r12, rax
    
    ; Converti in ASCII e stampa (solo 0-9)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Esci
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Assembly