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 data de memory para um register, aprenderá o inverso: armazenar data de um register into memory.

Sintaxe:

mov [address], register

Os brackets [ ] significam: "armazene o valor do register into este memory address."

Pense desta forma:

Imagine que, no endereço de memória destination, há uma caixa vazia. Você tem um valor armazenado 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."

Depois que esta instrução é executada, o endereço de memória destination agora contém o valor 7. O valor em al permanece lá. Ele não é removido.

Exemplo:

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

Observação: Neste exercício, os dados na memory têm 1 byte (8 bits). É por isso que usamos al. Esse é o register de 8 bits que corresponde ao tamanho. Você aprenderá mais sobre os tamanhos de register posteriormente.

Regras importantes:

RegraExplicação
Os brackets são obrigatóriosmov destination, al estaria errado
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: faltam colchetes
mov destination, al

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

No desafio abaixo, o endereço de memória destination já foi criado para você. Você aprenderá a criar seus próprios dados no Capítulo 3. Por enquanto, concentre-se 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 estudante
    
    %include "solution.asm"
    
    ; Carrega o valor armazenado da memória em al para impressão
    mov al, [destination]
    
    ; Salva-o
    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
    
    ; Sai
    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

Pratique por conta própria: Playground de Assembly