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 vous savez comment placer un nombre directement dans un registre (MOV immédiat), vous pouvez é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, les deux rax et rbx contiennent 5.

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

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 sauvegarder une valeur en la copiant dans un autre registre avant de modifier l'original
  • Vous pouvez réutiliser des valeurs sans avoir à les charger de nouveau depuis la mémoire
  • C'est le fondement de la plupart des opérations en assembleur
challenge icon

Défi

Écrivez le code assembleur pour ces tâches :

  1. Mettez 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 devraient 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