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 simple de créer des données en mémoire est db — Define Byte. Elle crée un octet (8 bits) de données.
Syntaxe :
label db valuelabel— le nom que vous donnez à cette adresse mémoiredb— directive Define Byte (définir un octet)value— le nombre ou le caractère à stocker (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 (ASCII pour 'A')
zero db 0 ; Crée un octet nommé "zero" contenant 0Ce que vous pouvez 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 :
Vous pouvez définir plusieurs octets à 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] ; 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 | 0 à 255 (ou un seul caractère) |
Utilisez al pour charger ou stocker | al est le registre 8 bits pour les octets |
Erreur courante :
; Erreur : tentative de stockage d'un nombre trop grand pour un octet
section .data
error db 300 ; 300 est trop grand (max 255)Défi
FacileCréez un octet nommé score avec la valeur 15 dans la section .data.
Écrivez 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.asm