Assembler le tout
Fait partie de la section Fondamentaux du Journey Assembly de Coddy — leçon 39 sur 45.
Vous avez appris les quatre éléments de l'appel système write :
| Registre | Ce qu'il contient | Valeur pour la sortie écran |
|---|---|---|
rax | Numéro de l'appel système | 1 (write) |
rdi | Descripteur de fichier | 1 (stdout) |
rsi | Adresse du buffer | Adresse de votre chaîne |
rdx | Nombre d'octets | Longueur de votre chaîne |
Il est maintenant temps de tout mettre ensemble.
Le modèle complet de l'appel système write :
mov rax, 1 ; numéro de l'appel système pour write
mov rdi, 1 ; descripteur de fichier (stdout)
mov rsi, msg ; adresse de la chaîne
mov rdx, msgLen ; nombre d'octets à imprimer
syscall ; demander à l'OS d'imprimerUn programme complet et fonctionnel :
section .data
msg db 'Hello, World!', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
mov rax, 60
mov rdi, 0
syscallCe que fait ce programme :
| Étape | Ce qui se passe |
|---|---|
| 1 | Affiche "Hello, World!" à l'écran |
| 2 | Passe à une nouvelle ligne |
| 3 | Se termine proprement avec le code 0 |
L'ordre est important :
Vous devez configurer les registres avant d'exécuter syscall. L'ordre des instructions mov n'a pas d'importance tant que les quatre sont configurés avant syscall.
Défi
Écrivez un programme complet qui affiche le message "Assembly is fun" suivi d'un saut de ligne, puis se termine proprement.
La chaîne et sa longueur sont déjà définies. Vous avez seulement besoin d'écrire le code à l'intérieur de _start:.
Essayez vous-même
section .data
msg db 'Assembly is fun', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; À FAIRE : Configurer et appeler l'appel système write
; Utiliser rax=1, rdi=1, rsi=msg, rdx=msgLen
; À FAIRE : Quitter proprement avec le code 0Cette 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-64