Menu
Coddy logo textTech

MOV de Registre à Registre

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

Maintenant que tu sais comment placer directement un nombre dans un registre (MOV immédiat), tu peux également copier des valeurs entre les registres.

Syntaxe :

mov destination_register, source_register

La valeur du registre source est copiée dans le registre destination. Le registre source reste inchangé.

Exemple :

mov rax, 5      ; rax = 5
mov rbx, rax    ; rbx = 5 (copié depuis rax)

Après ces deux instructions, rax et rbx contiennent tous deux 5.

Important : Le registre source (rax) conserve sa valeur. MOV copie : il ne coupe pas et ne déplace pas.

Un autre exemple :

mov rax, 7      ; rax = 7
mov rcx, 3      ; rcx = 3
mov rdx, rcx    ; rdx = 3 (copié depuis rcx)
mov rbx, rax    ; rbx = 7 (copié depuis rax)

Après ces instructions :

RegistreValeur
rax7
rcx3
rdx3
rbx7

Pourquoi c’est important :

  • Vous pouvez enregistrer une valeur en la copiant dans un autre registre avant de modifier l’originale
  • Vous pouvez réutiliser values sans les charger à nouveau depuis la mémoire
  • C’est le fondement de la plupart des opérations d’assemblage
challenge icon

Défi

Écrivez le code assembleur pour ces tâches :

  1. Placez le nombre 4 dans rax
  2. Copiez la valeur de rax dans rbx
  3. Copiez la valeur de rbx dans rcx

Après votre code, les trois registres doivent contenir 4.

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
    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