Menu
Coddy logo textTech

Cadenas con db

Parte de la sección Fundamentos del Journey de Assembly de Coddy — lección 28 de 45.

Ya sabes que db define un solo byte. Pero db también puede definir una cadena: varios bytes seguidos.

Sintaxis:

label db 'text here'

Ejemplo:

section .data
    message db 'Hello'

Esto crea 5 bytes en memoria: 'H', 'e', 'l', 'l', 'o'

Qué sucede en la memoria:

DirecciónByteValor ASCII
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

Añadir una nueva línea:

Para imprimir una cadena y pasar a la siguiente línea, añade 0x0a (carácter de nueva línea):

section .data
    message db 'Hello', 0x0a

Ahora la cadena tiene 6 bytes: 'H','e','l','l','o', salto de línea

Múltiples cadenas:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

Por qué esto es importante:

Las cadenas son los datos más comunes que usarás en assembly. La syscall write (que aprenderás en el Capítulo 5) imprime cadenas leyendo bytes de la memoria hasta que alcanza la longitud que le proporciones.

Nota importante:

Las cadenas son solo bytes. La CPU no sabe ni le importa que 'H' sea una letra. Es solo el número 72. La llamada al sistema write interpreta esos números como caracteres al imprimir.

challenge icon

Desafío

Fácil

Crea una cadena llamada greeting con el valor 'Hi' seguida de un salto de línea (0x0a) en la sección .data.

Pruébalo tú mismo

%include "data.asm"

section .text
    global _start

_start:
    ; Imprimir la cadena usando la llamada al sistema write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', salto de línea = 3 bytes
    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