Menu
Coddy logo textTech

MOV de Registro a Memoria

Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 18 de 45.

Ahora que sabes cómo cargar data desde memory en un register, aprenderás lo contrario: almacenar data desde un register en memory.

Sintaxis:

mov [address], register

Los brackets significan: «almacena el valor del register en esta dirección de memory».

Piensa en ello de esta manera:

Imagina que en la dirección de memoria destination hay una caja vacía. Tienes un valor almacenado en un registro (por ejemplo, al contiene el número 7).

Cuando escribes:

mov [destination], al

Le estás diciendo a la CPU: «Toma el valor del registro al (7) y colócalo en la caja llamada destination».

Después de ejecutar esta instrucción, la dirección de memoria destination ahora contiene el valor 7. El valor en al permanece allí. No se elimina.

Ejemplo:

mov al, 7            ; Pon 7 en el registro al
mov [destination], al ; Almacena el valor de al en la dirección de memoria "destination"

Nota: En este ejercicio, los datos en memory tienen un tamaño de 1 byte (8 bits). Por eso usamos al. Es el register de 8 bits que coincide con el tamaño. Más adelante aprenderás más sobre los tamaños de los register.

Reglas importantes:

ReglaExplicación
Los brackets son obligatoriosmov destination, al sería incorrecto
El destino debe ser una dirección de memoriaUsa una etiqueta como [destination]
El tamaño debe coincidirPara este ejercicio, usa al (8 bits)

Error común:

; Incorrecto: faltan corchetes
mov destination, al

; Correcto: almacena el valor en la memoria
mov [destination], al

En el desafío de abajo, la dirección de memoria destination ya está creada para ti. Aprenderás a crear tus propios datos en el capítulo 3. Por ahora, concéntrate únicamente en la instrucción MOV.

challenge icon

Desafío

Escribe dos líneas de ensamblador para:

  1. Put el número 9 en el registro al
  2. Store el valor de al en la dirección de memoria destination

(La dirección de memoria destination ya está creada para ti.)

Pruébalo tú mismo

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

section .bss
    digit resb 1

section .text
    global _start

_start:
    ; solution.asm se incluye aquí
    ; Define destination Y las instrucciones MOV del estudiante
    
    %include "solution.asm"
    
    ; Carga el valor almacenado de la memoria en al para imprimir
    mov al, [destination]
    
    ; Guárdalo
    mov r12, rax
    
    ; Imprime "destination = "
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; Imprime el valor
    mov rax, r12
    add rax, 48
    mov [digit], al
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Salir
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Assembly