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ón | Byte | Valor 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', 0x0aAhora 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', 0x0aPor 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.
Desafío
FácilCrea 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
syscallEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1La máquina
¿Qué es la CPU?MemoriaRegistros vs. MemoriaCómo funcionan las instruccionesPatrón de dos archivosLa arquitectura x86-644Definición de datos
La sección .datadb - Definir Bytedw - Definir Worddd - Definir Double Worddq - Definir Quad WordCadenas con dbEl símbolo $Resumen: Construir data.asmPractica por tu cuenta: Playground de Assembly