db - Définir un octet
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 24 sur 45.
La manière la plus basique de créer des données en mémoire est db : Define Byte. Cela crée un octet (8 bits) de données.
Syntaxe :
label db valuelabel: le nom que tu donnes à cette adresse mémoiredb: directive Define Bytevalue: le nombre ou le caractère à stocker (0 à 255)
Exemples :
section .data
age db 25 ; Crée un octet appelé "age" contenant 25
grade db 'A' ; Crée un octet appelé "grade" contenant 65 (ASCII pour 'A')
zero db 0 ; Crée un octet appelé "zero" contenant 0Ce que vous pouvez stocker dans un byte :
| Type | Plage | Exemple |
|---|---|---|
| Petit number | 0 à 255 | db 100 |
| character | 'A' à 'z' | db 'X' |
| ASCII code | 0 à 255 | db 65 (identique à 'A') |
Plusieurs bytes sur une ligne :
Vous pouvez définir plusieurs bytes à la suite en utilisant 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] ; Charge la valeur 42 dans al
add al, 1 ; al devient 43
mov [myByte], al ; Stocke 43 de nouveau dans myByteRègle importante :
| Règle | Explication |
|---|---|
| La valeur doit tenir dans 1 byte | De 0 à 255 (ou un seul caractère) |
Utilisez al pour charger ou store | al est le registre de 8 bits pour les bytes |
Erreur courante :
; Faux : tentative de stocker un nombre trop grand pour un octet
section .data
error db 300 ; 300 est trop grand (max 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