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 vous savez comment charger des données depuis la mémoire dans un registre, vous allez apprendre l'inverse : stocker des données d'un registre vers la mémoire.

Syntaxe :

mov [address], register

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

Voyez les choses ainsi :

Imaginez qu'à l'adresse mémoire destination il y a une boîte vide. Vous avez une valeur située dans un registre (par exemple, al contient le nombre 7).

Lorsque vous écrivez :

mov [destination], al

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

Après l'exécution de cette instruction, l'adresse mémoire destination contient désormais 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 donnée en mémoire est de 1 octet (8 bits). C'est pourquoi nous utilisons al — c'est le registre de 8 bits qui correspond à la taille. Vous en apprendrez davantage sur les tailles de registres plus tard.

Règles importantes :

RègleExplication
Les crochets sont obligatoiresmov 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 courante :

; Erreur : 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 vous. Vous apprendrez comment créer vos propres données au Chapitre 3. Pour l'instant, concentrez-vous simplement sur l'instruction MOV.

challenge icon

Défi

Écrivez deux lignes d'assembleur 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"
    
    ; Charger la valeur stockée depuis la mémoire dans al pour l'affichage
    mov al, [destination]
    
    ; La sauvegarder
    mov r12, rax
    
    ; Afficher "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Afficher 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