Chaînes de caractères avec db
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 28 sur 45.
Tu sais déjà que db définit un seul octet. Mais db peut également définir une chaîne : plusieurs octets à la suite.
Syntaxe :
label db 'text here'Exemple :
section .data
message db 'Hello'Cela crée 5 bytes en mémoire : 'H', 'e', 'l', 'l', 'o'
Ce qui se passe en mémoire :
| Adresse | Octet | Valeur ASCII |
|---|---|---|
| message | 'H' | 72 |
| message+1 | 'e' | 101 |
| message+2 | 'l' | 108 |
| message+3 | 'l' | 108 |
| message+4 | 'o' | 111 |
Ajouter un retour à la ligne :
Pour afficher une chaîne et passer à la ligne suivante, ajoutez 0x0a (caractère de nouvelle ligne) :
section .data
message db 'Hello', 0x0aMaintenant, string compte 6 bytes : 'H','e','l','l','o', newline
Chaînes multiples :
section .data
hello db 'Hello', 0x0a
goodbye db 'Goodbye', 0x0aPourquoi est-ce important :
Les chaînes sont les données les plus courantes que vous utiliserez en assembleur. L’appel système write (que vous apprendrez au chapitre 5) affiche les chaînes en lisant des bytes en mémoire jusqu’à ce qu’il atteigne la longueur que vous lui indiquez.
Remarque importante :
Les chaînes sont simplement des bytes. Le CPU ne sait pas et ne se soucie pas que 'H' soit une lettre. Il s’agit simplement du nombre 72. Le syscall write interprète ces nombres comme des caractères lors de l’affichage.
Défi
FacileCréez une chaîne nommée greeting avec la valeur 'Hi' suivie d’un saut de ligne (0x0a) dans la section .data.
Essayez vous-même
%include "data.asm"
section .text
global _start
_start:
; Afficher la chaîne en utilisant l'appel système write
mov rax, 1
mov rdi, 1
mov rsi, greeting
mov rdx, 3 ; 'H', 'i', newline = 3 octets
syscall
; Quitter
mov rax, 60
mov rdi, 0
syscallCette 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