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 datos desde la memoria en un registro, aprenderás lo contrario: almacenar datos de un registro en la memoria.

Sintaxis:

mov [address], register

Los corchetes [ ] significan: "almacena el valor del registro en esta dirección de memoria".

Piénsalo de esta manera:

Imagina que en la dirección de memoria destination hay una caja vacía. Tienes un valor guardado 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 ponlo en la caja llamada destination."

Después de que se ejecute 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            ; Poner 7 en el registro al
mov [destination], al ; Almacenar el valor de al en la dirección de memoria "destination"

Nota: En este ejercicio, los datos en memoria son de 1 byte (8 bits). Es por eso que usamos al; es el registro de 8 bits que coincide con el tamaño. Aprenderás más sobre los tamaños de los registros más adelante.

Reglas importantes:

ReglaExplicación
Los corchetes 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 siguiente desafío, 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, solo concéntrate en la instrucción MOV.

challenge icon

Desafío

Escribe dos líneas de ensamblador para:

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

(La dirección de memoria destination ya ha sido 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 desde 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