Afficher deux chaînes
Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 40 sur 45.
Tu sais déjà comment afficher une chaîne. Mais que faire si tu veux afficher deux chaînes distinctes ? Par exemple, « Hello » puis « World! » ?
Il suffit d’appeler deux fois l’appel système write, une fois pour chaque chaîne.
Comment ça fonctionne :
; Premier affichage
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall
; Deuxième affichage
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscallExemple :
section .data
first db 'Hello ', 0x0a
firstLen equ $-first
second db 'World!', 0x0a
secondLen equ $-second
section .text
global _start
_start:
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
syscall
mov rax, 60
mov rdi, 0
syscallSortie :
Hello
World!
Chaque chaîne se termine par 0x0a (un saut de ligne), donc les deux chaînes s’affichent sur des lignes distinctes.
Pourquoi afficher deux chaînes au lieu d’une seule ?
| Raison | Exemple |
|---|---|
| Réutilisabilité | Afficher la même salutation avec différents noms |
| Flexibilité | Afficher différents messages selon les conditions |
| Organisation | Garder différents messages séparés en mémoire |
Tu peux afficher autant de chaînes que tu veux :
Il suffit de répéter l’appel système write pour chaque chaîne.
Défi
On vous donne deux chaînes : partOne ayant pour valeur 'Good' et partTwo ayant pour valeur 'bye'. Elles ont toutes les deux déjà un saut de ligne à la fin.
Écrivez le code pour afficher partOne, puis partTwo, afin que la sortie affiche :
Good
bye
La section de données et l’appel système de sortie sont déjà fournis. Vous n’avez qu’à écrire les deux appels système d’écriture.
Essayez vous-même
section .data
partOne db 'Good', 0x0a
partOneLen equ $-partOne
partTwo db 'bye', 0x0a
partTwoLen equ $-partTwo
section .text
global _start
_start:
; TODO: Afficher partOne à l’aide de l’appel système write
; TODO: Afficher partTwo à l’aide de l’appel système write
mov rax, 60
mov rdi, 0
syscall
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-64Entraînez-vous par vous-même : Playground Assembly