Variables en NASM
¿Qué es una variable en NASM?
Una variable en NASM es simplemente una dirección de memoria reservada para almacenar datos. En ensamblador no se manejan tipos como en otros lenguajes, sino que se reserva un espacio con un tamaño concreto (por ejemplo, 1 byte, 2 bytes, etc.) y se accede a ese espacio por su dirección.
Tipos de variables en NASM
-
db (define byte): reserva 1 byte en memoria. Ideal para valores pequeños o caracteres.
-
dw (define word): reserva 2 bytes (16 bits). Se usa para números más grandes o para direcciones en modo real.
-
dd (define double word): reserva 4 bytes (32 bits), usado para datos más grandes.
-
dq (define quad word): reserva 8 bytes (64 bits).
-
resb (reserve byte): reserva espacio de memoria sin inicializar, especificando la cantidad de bytes.
-
resw (reserve word): reserva palabras (2 bytes cada una) sin inicializar.
Cómo funcionan
Cuando declaras una variable con uno de estos tipos, el ensamblador asigna un espacio en memoria y le pone una etiqueta. Esa etiqueta es la forma de referirte a esa dirección.
Para acceder al valor de la variable usas su etiqueta entre corchetes, por ejemplo, si la variable se llama contador
, para cargar su valor en un registro usarías algo equivalente a "mover el contenido de la dirección contador
al registro".
Para obtener la dirección de la variable (y no su contenido), se usa una instrucción especial que carga la dirección efectiva.
Variables inicializadas y no inicializadas
-
Las variables declaradas con
db
,dw
,dd
, etc., en la sección.data
suelen estar inicializadas con un valor. -
Las variables reservadas con
resb
,resw
, etc., en la sección.bss
solo reservan espacio sin definir un valor inicial.