Menu
CoddyTech

La sección .data

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

En el capítulo 2, cargaste valores de la memoria y guardaste valores en la memoria. Pero ¿de dónde salió esa memoria? ¿Quién creó num1, num2 y result?

La respuesta es la sección .data. Aquí es donde creas tus propios datos en la memoria.

¿Qué es la sección .data?

La sección .data es una parte de tu programa en ensamblador donde defines los datos que se almacenarán en la memoria antes de que se ejecute tu programa.

Sintaxis:

section .data
    ; Aquí van tus definiciones de datos

Por qué lo necesitas:

Sin sección .dataCon sección .data
No tienes datos con los que trabajarPuedes crear números, cadenas y variables
Se desconocen las direcciones de memoriaPuedes usar etiquetas como myNumber o message
No puedes probar tu códigoPuedes cargar y almacenar los datos que creaste

Un ejemplo sencillo:

section .data
    age db 25           ; Crea un byte llamado "age" con el valor 25
    price dw 1000       ; Crea una palabra llamada "price" con el valor 1000
    name db 'Bob'       ; Crea una cadena llamada "name" con las letras B, o, b

Dónde va en tus archivos:

Recuerda el patrón de dos archivos del capítulo 0:

ArchivoContenido
data.asmsection .data con tus definiciones de datos
main.asm%include "data.asm" seguido de section .text con tu código

Qué sucede cuando se ejecuta tu programa:

  1. El sistema operativo carga tu programa en la memoria
  2. Lee la sección .data y coloca tus datos en direcciones de memoria específicas
  1. Tus etiquetas (age, price, name) se convierten en direcciones
  2. Tu código ahora puede acceder a estas direcciones usando [age], [price], [name]

Reglas importantes:

Mantén tus datos juntosExplicación
Podrías abrir section .data más de una vez (el ensamblador une las partes), pero una sola sección en data.asm es más fácil de leer
Las etiquetas deben ser únicasNo puedes tener dos etiquetas age
Los datos se crean antes de que se ejecute tu códigoEstán listos para usarse cuando comienza _start

En las próximas lecciones, aprenderás a definir distintos tipos de datos usando db, dw, dd y dq

challenge icon

Desafío

Escribe el código en el archivo data.asm para:

  1. Crear la sección .data
  2. Crear un byte llamado count con el valor 5

Pruébalo tú mismo

%include "data.asm"

section .text
    global _start

_start:
    ; Carga el valor de count en al
    mov al, [count]
    
    ; Guárdalo para imprimirlo
    mov r12, rax
    
    ; Convierte a ASCII e imprime (solo 0-9)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Sal
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
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