Menu
Coddy logo textTech

MOV d'un Registre vers la Mémoire

Fait partie de la section Fondamentaux du Journey Assembly de Coddy. Leçon 18 sur 45.

Maintenant que tu sais comment charger des données depuis la mémoire dans un registre, tu vas apprendre l’inverse : stocker des données d’un registre dans la mémoire.

Syntaxe :

mov [address], register

Les crochets [ ] signifient : « store la valeur du registre dans cette adresse mémoire. »

Imagine cela ainsi :

Imagine qu’à l’adresse mémoire destination se trouve une boîte vide. Tu as une valeur stockée dans un registre (par exemple, al contient le nombre 7).

Lorsque vous écrivez :

mov [destination], al

Vous dites au CPU : « Prenez la valeur du registre al (7) et mettez-la dans la boîte appelée destination. »

Après l’exécution de cette instruction, l’adresse mémoire destination contient maintenant la valeur 7. La valeur dans al y reste. Elle n’est pas supprimée.

Exemple :

mov al, 7            ; Mettre 7 dans le registre al
mov [destination], al ; Stocker la valeur de al dans l'adresse mémoire "destination"

Remarque : Dans cet exercice, la data en mémoire fait 1 octet (8 bits). C’est pourquoi nous utilisons al. Il s’agit du registre de 8 bits qui correspond à la taille. Vous en apprendrez davantage sur les tailles des register plus tard.

Règles importantes :

RègleExplication
Les brackets sont obligatoiresmov destination, al serait incorrect
La destination doit être une adresse mémoireUtilisez un label comme [destination]
La taille doit correspondrePour cet exercice, utilisez al (8 bits)

Erreur fréquente :

; Incorrect : crochets manquants
mov destination, al

; Correct : stocke la valeur en mémoire
mov [destination], al

Dans le défi ci-dessous, l’adresse mémoire destination est déjà créée pour toi. Tu apprendras à créer tes propres données au chapitre 3. Pour l’instant, concentre-toi simplement sur l’instruction MOV.

challenge icon

Défi

Écrivez deux lignes d’assembly pour :

  1. Mettre le nombre 9 dans le registre al
  2. Stocker la valeur de al à l’adresse mémoire destination

(L’adresse mémoire destination est déjà créée pour vous.)

Essayez vous-même

section .data
    msg db 'destination = '
    msg_len equ $ - msg

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; solution.asm est inclus ici
    ; Il définit destination ET les instructions MOV de l'étudiant
    
    %include "solution.asm"
    
    ; Charge la valeur stockée depuis la mémoire dans al pour l'affichage
    mov al, [destination]
    
    ; Sauvegarde-le
    mov r12, rax
    
    ; Affiche "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Affiche la valeur
    mov rax, r12
    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
    syscall
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Assembly