MOV Immédiat
Fait partie de la section Fondamentaux du Journey Assembly de Coddy — leçon 15 sur 45.
La forme la plus simple de MOV est MOV immédiat. « Immédiat » signifie que la valeur est écrite directement dans l'instruction elle-même.
Syntaxe :
mov register, valueLa valeur est copiée dans le registre.
Exemples :
| Instruction | Ce qu'elle fait |
|---|---|
mov rax, 5 | Copie le nombre 5 dans rax |
mov rbx, 100 | Copie le nombre 100 dans rbx |
mov rcx, 0 | Copie le nombre 0 dans rcx |
Ce code ne produit rien de visible (pas encore de sortie), mais il place avec succès des nombres dans les registres.
Remarque : Vous verrez l'effet de ces instructions MOV dans les leçons suivantes lorsque vous apprendrez à afficher ou à déboguer. Pour l'instant, sachez simplement que les nombres sont stockés dans les registres.
Règles importantes :
| Règle | Explication |
|---|---|
| La valeur doit tenir dans le registre | rax peut contenir de très grands nombres (jusqu'à 2⁶⁴-1) |
| La valeur est copiée, pas déplacée | Le nombre d'origine existe toujours (c'est juste un nombre) |
| Les registres à gauche | mov rax, 5 est correct. mov 5, rax est incorrect |
Défi
Écrivez une ligne de code assembleur pour chaque tâche :
- Mettez le nombre 5 dans le registre
rax. - Mettez le nombre 7 dans le registre
rbx. - Mettez le nombre 3 dans le registre
rcx.
Essayez vous-même
section .data
msg_rax db 'rax = '
msg_rax_len equ $ - msg_rax
msg_rbx db 'rbx = '
msg_rbx_len equ $ - msg_rbx
msg_rcx db 'rcx = '
msg_rcx_len equ $ - msg_rcx
section .bss
digit resb 1
section .text
global _start
_start:
%include "solution.asm"
; Sauvegarder les valeurs
mov r12, rax
mov r13, rbx
mov r14, rcx
; Afficher "rax = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rax
mov rdx, msg_rax_len
syscall
; Afficher la valeur de rax
mov rax, r12
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Afficher "rbx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rbx
mov rdx, msg_rbx_len
syscall
; Afficher la valeur de rbx
mov rax, r13
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Afficher "rcx = "
mov rax, 1
mov rdi, 1
mov rsi, msg_rcx
mov rdx, msg_rcx_len
syscall
; Afficher la valeur de rcx
mov rax, r14
add rax, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
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-64