Menu
Coddy logo textTech

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 almacenaste valores en la memoria. ¿Pero de dónde vino esa memoria? ¿Quién creó num1, num2 y result?

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

¿Qué es la sección .data?

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

Sintaxis:

section .data
    ; Tus definiciones de datos van aquí

Por qué lo necesitas:

Sin la sección .dataCon la sección .data
No tienes datos con los que trabajarPuedes crear números, cadenas y variables
Las direcciones de memoria son desconocidasPuedes 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:

ReglaExplicación
Una sección .data por programaColoca todos tus datos en un solo lugar
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 usar cuando _start comienza

En las próximas lecciones, aprenderás cómo definir diferentes tipos de datos utilizando 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 imprimir
    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
    
    ; Salir
    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