Menu
Coddy logo textTech

MOV Registrador para Memória

Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 18 de 45.

Agora que você sabe como carregar dados da memória para um registrador, você aprenderá o inverso: armazenar dados de um registrador na memória.

Sintaxe:

mov [address], register

Os colchetes [ ] significam: "armazene o valor do registrador neste endereço de memória."

Pense nisso da seguinte forma:

Imagine que no endereço de memória destination há uma caixa vazia. Você tem um valor em um registrador (por exemplo, al contém o número 7).

Quando você escreve:

mov [destination], al

Você está dizendo à CPU: "Pegue o valor do registrador al (7) e coloque-o na caixa chamada destination."

Após a execução desta instrução, o endereço de memória destination agora contém o valor 7. O valor em al permanece lá — não é removido.

Exemplo:

mov al, 7            ; Coloca 7 no registrador al
mov [destination], al ; Armazena o valor de al no endereço de memória "destination"

Nota: Neste exercício, os dados na memória são de 1 byte (8 bits). É por isso que usamos al — ele é o registrador de 8 bits que corresponde ao tamanho. Você aprenderá mais sobre tamanhos de registradores mais tarde.

Regras importantes:

RegraExplicação
Os colchetes são obrigatóriosmov destination, al estaria incorreto
O destino deve ser um endereço de memóriaUse um rótulo como [destination]
O tamanho deve corresponderPara este exercício, use al (8 bits)

Erro comum:

; Errado: colchetes ausentes
mov destination, al

; Correto: armazena o valor na memória
mov [destination], al

No desafio abaixo, o endereço de memória destination já está criado para você. Você aprenderá como criar seus próprios dados no Capítulo 3. Por enquanto, foque apenas na instrução MOV.

challenge icon

Desafio

Escreva duas linhas de assembly para:

  1. Colocar o número 9 no registrador al
  2. Armazenar o valor de al no endereço de memória destination

(O endereço de memória destination já foi criado para você.)

Experimente você mesmo

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

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; solution.asm é incluído aqui
    ; Ele define destination E as instruções MOV do aluno
    
    %include "solution.asm"
    
    ; Carrega o valor armazenado da memória em al para impressão
    mov al, [destination]
    
    ; Salva o valor
    mov r12, rax
    
    ; Imprime "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Imprime o valor
    mov rax, r12
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Sair
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos