db - Définir un octet
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 24 sur 45.
La façon la plus élémentaire de créer des données en mémoire est db : Définir un octet. Cela crée un octet (8 bits) de données.
Syntaxe :
label db valuelabel: le nom que tu donnes à cette adresse mémoiredb: directive de définition d’un octetvalue: le nombre ou le caractère à stocker (de 0 à 255)
Exemples :
section .data
age db 25 ; Crée un octet nommé "age" contenant 25
grade db 'A' ; Crée un octet nommé "grade" contenant 65 (code ASCII de 'A')
zero db 0 ; Crée un octet nommé "zero" contenant 0Ce que tu peux stocker dans un octet :
| Type | Plage | Exemple |
|---|---|---|
| Petit nombre | 0 à 255 | db 100 |
| Caractère | 'A' à 'z' | db 'X' |
| Code ASCII | 0 à 255 | db 65 (identique à 'A') |
Plusieurs octets sur une seule ligne :
Tu peux définir plusieurs octets à la suite en les séparant par des virgules :
section .data
numbers db 5, 10, 15, 20 ; Crée 4 octets : 5, 10, 15, 20
letters db 'A', 'B', 'C' ; Crée 3 octets : 65, 66, 67Comment utiliser un octet dans votre code :
section .data
myByte db 42
section .text
mov al, [myByte] ; Charger la valeur 42 dans al
add al, 1 ; al devient 43
mov [myByte], al ; Stocker à nouveau 43 dans myByteRègle importante :
| Règle | Explication |
|---|---|
| La valeur doit tenir sur 1 octet | De 0 à 255 (ou un seul caractère) |
Utilisez un registre de 8 bits tel que al pour charger ou stocker | al (comme bl, cl, dl) est un registre de 8 bits |
Erreur courante :
; Incorrect : tentative de stocker un nombre trop grand pour un octet
section .data
error db 300 ; 300 est trop grand (maximum 255)Défi
FacileCrée un octet appelé score avec la valeur 15 dans la section .data.
Écris le fichier data.asm avec la section .data correcte et la directive db.
Essayez vous-même
%include "data.asm"
section .text
global _start
_start:
mov al, [score]
mov r12, rax
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1La Machine
Qu'est-ce qu'un CPULa mémoireRegistres vs MémoireFonctionnement des instructionsLe modèle à deux fichiersL'architecture x86-644Définition des données
La section .datadb - Définir un octetdw - Définir un motdd - Définir un double motdq - Définir un quadruple motChaînes de caractères avec dbLe symbole $Récapitulatif : Construire data.asmEntraînez-vous par vous-même : Playground Assembly