L'importance du saut de ligne
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 41 sur 45.
Vous avez ajouté 0x0a (saut de ligne) à la fin de vos chaînes. Mais que se passe-t-il si vous l’oubliez ?
Sans saut de ligne :
Le texte s’affiche, mais le curseur reste sur la même ligne. Toute sortie future apparaîtra juste à côté.
Exemple sans nouvelle ligne :
section .data
first db 'Hello'
firstLen equ $ - first
second db 'World'
secondLen equ $ - second
section .text
mov rax, 1
mov rdi, 1
mov rsi, first
mov rdx, firstLen
syscall
mov rax, 1
mov rdi, 1
mov rsi, second
mov rdx, secondLen
syscallSortie :
HelloWorld
Pas d’espace. Pas de nouvelle ligne. Tout est collé.
Avec un saut de ligne :
section .data
first db 'Hello', 0x0a
firstLen equ $ - first
second db 'World', 0x0a
secondLen equ $ - secondSortie :
Hello
World
Chaque chaîne s’affiche sur sa propre ligne.
Ce que fait le saut de ligne :
| Caractère | ASCII | Effet |
|---|---|---|
0x0a | 10 | Déplace le curseur au début de la ligne suivante |
Erreurs courantes liées aux sauts de ligne :
| Erreur | Résultat |
|---|---|
| Aucun saut de ligne | Le texte s’enchaîne sur une seule ligne |
| Saut de ligne uniquement à la fin de la dernière chaîne | Les chaînes précédentes s’enchaînent, la dernière passe à la ligne suivante |
| Saut de ligne au milieu d’une chaîne | Les lignes se coupent à des endroits inattendus |
La règle de sécurité :
Ajoutez toujours 0x0a à la fin de chaque chaîne que vous souhaitez afficher sur sa propre ligne.
Défi
On vous donne trois chaînes sans sauts de ligne. Votre tâche consiste à les afficher afin qu’elles apparaissent sur trois lignes distinctes.
Les chaînes sont les suivantes :
| Chaîne | Valeur |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
Exigences :
- Définir chaque chaîne avec un saut de ligne (
0x0a) à la fin - Calculer automatiquement la longueur de chaque chaîne
- Afficher les trois chaînes à l’aide de l’appel système write
- Quitter proprement avec le code 0
Essayez vous-même
section .data
; TODO: Définir word1 avec le 1er texte listé dans les instructions et un saut de ligne
; TODO: Définir word2 avec le 2e texte listé dans les instructions et un saut de ligne
; TODO: Définir word3 avec le 3e texte listé dans les instructions et un saut de ligne
; TODO: Calculer les longueurs pour chaque chaîne
section .text
global _start
_start:
; TODO: Afficher word1
; TODO: Afficher word2
; TODO: Afficher word3
; TODO: Quitter proprement
Cette 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-643Première instruction - MOV
Qu'est-ce que MOV ?MOV ImmédiatMOV de Registre à RegistreMOV de la Mémoire vers un RegistreMOV d'un Registre vers la MémoireLEA - Charger l'adresseMOV avec différentes taillesPratique : Échanger des registresRécapitulatif : Défi MOV6Appel système Write
Appel système Write (1)Descripteur de fichier (rdi)Adresse du buffer (rsi)Nombre d'octets (rdx)Assembler le toutAfficher deux chaînesL'importance du saut de ligneRécapitulatif : Configuration de WriteEntraînez-vous par vous-même : Playground Assembly