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 la 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

Cómo añadir un salto de línea:

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

section .data
    message db 'Hello', 0x0a

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

Varias cadenas:

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

Por qué esto importa:

Las cadenas son los datos más comunes que usarás en ensamblador. La llamada al sistema write (que aprenderás en el capítulo 5) imprime cadenas leyendo bytes de la memoria hasta alcanzar la longitud que le indiques.

Nota importante:

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

challenge icon

Desafío

Fácil

Crea un string llamado greeting con el valor 'Hi' seguido de un salto de línea (0x0a) en la sección .data.

Pruébalo tú mismo

%include "data.asm"

section .text
    global _start

_start:
    ; Imprime la cadena usando la syscall write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', newline = 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

Practica por tu cuenta: Playground de Assembly