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 : « stocker la valeur du registre à 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, les données en mémoire occupent 1 octet (8 bits). C’est pourquoi nous utilisons al. Il s’agit du registre de 8 bits qui correspond à cette taille. Vous en apprendrez davantage sur la taille des registres plus tard.

Règles importantes :

RègleExplication
Les crochets sont requismov destination, al serait incorrect
La destination doit être une adresse mémoireUtilisez une étiquette 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