Chaînes de caractères avec db
Fait partie de la section Fondamentaux du Journey Assembly de Coddy — leçon 28 sur 45.
Vous savez déjà que db définit un seul octet. Mais db peut également définir une chaîne de caractères — plusieurs octets à la suite.
Syntaxe :
label db 'text here'Exemple :
section .data
message db 'Hello'Cela crée 5 octets 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 saut de ligne :
Pour afficher une chaîne et passer à la ligne suivante, ajoutez 0x0a (caractère de saut de ligne) :
section .data
message db 'Hello', 0x0aMaintenant, la chaîne contient 6 octets : 'H','e','l','l','o', saut de ligne
Plusieurs chaînes :
section .data
hello db 'Hello', 0x0a
goodbye db 'Goodbye', 0x0aPourquoi c'est important :
Les chaînes de caractères sont les données les plus courantes que vous utiliserez en assembleur. L'appel système write (que vous apprendrez au chapitre 5) affiche des chaînes de caractères en lisant des octets de la mémoire jusqu'à ce qu'il atteigne la longueur que vous lui donnez.
Note importante :
Les chaînes de caractères ne sont que des octets. Le processeur ne sait pas et ne se soucie pas du fait que 'H' soit une lettre. C'est simplement le nombre 72. L'appel système write interprète ces nombres comme des caractères lors de l'affichage.
Défi
FacileCréez une chaîne de caractères 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', saut de ligne = 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.asm