Menu
Coddy logo textTech

La section .data

Fait partie de la section Fondamentaux du Journey Assembly de Coddy — leçon 23 sur 45.

Dans le chapitre 2, vous avez chargé des valeurs depuis la mémoire et stocké des valeurs en mémoire. Mais d'où venait cette mémoire ? Qui a créé num1, num2 et result ?

La réponse est la section .data. C'est ici que vous créez vos propres données en mémoire.

Qu'est-ce que la section .data ?

La section .data est une partie de votre programme en assembleur où vous définissez les données qui seront stockées en mémoire avant l'exécution de votre programme.

Syntaxe :

section .data
    ; Vos définitions de données vont ici

Pourquoi vous en avez besoin :

Sans section .dataAvec section .data
Vous n'avez aucune donnée avec laquelle travaillerVous pouvez créer des nombres, des chaînes de caractères et des variables
Les adresses mémoire sont inconnuesVous pouvez utiliser des étiquettes comme myNumber ou message
Vous ne pouvez pas tester votre codeVous pouvez charger et stocker les données que vous avez créées

Un exemple simple :

section .data
    age db 25           ; Créer un octet appelé "age" avec la valeur 25
    price dw 1000       ; Créer un mot appelé "price" avec la valeur 1000
    name db 'Bob'       ; Créer une chaîne appelée "name" avec les lettres B, o, b

Où cela se place dans vos fichiers :

Rappelez-vous le modèle à deux fichiers du Chapitre 0 :

FichierContenu
data.asmsection .data avec vos définitions de données
main.asm%include "data.asm" suivi de section .text avec votre code

Ce qui se passe lorsque votre programme s'exécute :

  1. Le système d'exploitation charge votre programme en mémoire
  2. Il lit la section .data et place vos données à des adresses mémoire spécifiques
  1. Vos étiquettes (age, price, name) deviennent des adresses
  2. Votre code peut maintenant accéder à ces adresses en utilisant [age], [price], [name]

Règles importantes :

RègleExplication
Une section .data par programmeMettez toutes vos données au même endroit
Les étiquettes doivent être uniquesVous ne pouvez pas avoir deux étiquettes age
Les données sont créées avant l'exécution de votre codeElles sont prêtes à l'emploi lorsque _start commence

Dans les prochaines leçons, vous apprendrez comment définir différents types de données en utilisant db, dw, dd et dq

challenge icon

Défi

Écrivez le code dans le fichier data.asm pour :

  1. Créer la section .data
  2. Créer un octet nommé count avec la valeur 5

Essayez vous-même

%include "data.asm"

section .text
    global _start

_start:
    ; Charger la valeur de count dans al
    mov al, [count]
    
    ; La sauvegarder pour l'affichage
    mov r12, rax
    
    ; Convertir en ASCII et afficher (0-9 uniquement)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Quitter
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux