Menu
Coddy logo textTech

El salto de línea importa

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

Has estado añadiendo 0x0a (salto de línea) al final de tus cadenas. Pero, ¿qué pasa si lo olvidas?

Sin salto de línea:

El texto se imprime, pero el cursor permanece en la misma línea. Cualquier salida futura aparecerá justo al lado.

Ejemplo sin salto de línea:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

Salida:

HelloWorld

Sin espacios. Sin saltos de línea. Todo está pegado.

Con salto de línea:

section .data
    first db 'Hello', 0x0a
    firstLen equ $ - first
    second db 'World', 0x0a
    secondLen equ $ - second

Salida:

Hello World

Cada cadena se imprime en su propia línea.

Lo que hace el salto de línea:

CarácterASCIIEfecto
0x0a10Mueve el cursor al principio de la siguiente línea

Errores comunes de salto de línea:

ErrorResultado
Sin ningún salto de líneaEl texto se junta en una sola línea
Salto de línea solo al final de la última cadenaLas cadenas anteriores se juntan, la última pasa a la siguiente línea
Salto de línea en medio de una cadenaSaltos de línea en lugares inesperados

La regla segura:

Añade siempre 0x0a al final de cada cadena que quieras en su propia línea.

challenge icon

Desafío

Se te dan tres cadenas sin saltos de línea. Tu tarea es imprimirlas para que aparezcan en tres líneas separadas.

Las cadenas son:

CadenaValor
word1'Apple'
word2'Banana'
word3'Cherry'

Requisitos:

  • Define cada cadena con un salto de línea (0x0a) al final
  • Calcula la longitud de cada cadena automáticamente
  • Imprime las tres cadenas utilizando la llamada al sistema write
  • Finaliza limpiamente con el código 0

Pruébalo tú mismo

section .data
    ; TODO: Definir word1 con 'Apple' y nueva línea
    ; TODO: Definir word2 con 'Banana' y nueva línea
    ; TODO: Definir word3 con 'Cherry' y nueva línea
    ; TODO: Calcular las longitudes de cada cadena

section .text
    global _start

_start:
    ; TODO: Imprimir word1
    ; TODO: Imprimir word2
    ; TODO: Imprimir word3

    ; TODO: Salir limpiamentesection .data
    word1 db 'Apple', 0x0a
    word1Len equ $ - word1
    word2 db 'Banana', 0x0a
    word2Len equ $ - word2
    word3 db 'Cherry', 0x0a
    word3Len equ $ - word3

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, word1
    mov rdx, word1Len
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, word2
    mov rdx, word2Len
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, word3
    mov rdx, word3Len
    syscall

    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