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é ocurre 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
syscallSalida:
HelloWorld
Sin espacio. Sin salto 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 $ - secondSalida:
Hello
World
Cada cadena se imprime en su propia línea.
Qué hace el salto de línea:
| Carácter | ASCII | Efecto |
|---|---|---|
0x0a | 10 | Mueve el cursor al principio de la siguiente línea |
Errores comunes de salto de línea:
| Error | Resultado |
|---|---|
| Sin ningún salto de línea | El texto aparece todo junto en una sola línea |
| Salto de línea solo al final de la última cadena | Las cadenas anteriores aparecen juntas y la última pasa a la línea siguiente |
| Salto de línea en el centro de una cadena | Los saltos de línea aparecen en lugares inesperados |
La regla segura:
Añade siempre 0x0a al final de cada cadena que quieras en su propia línea.
Desafío
Se te proporcionan tres cadenas sin saltos de línea. Tu tarea es imprimirlas para que aparezcan en tres líneas separadas.
Las cadenas son:
| Cadena | Valor |
|---|---|
word1 | 'Apple' |
word2 | 'Banana' |
word3 | 'Cherry' |
Requisitos:
- Define cada cadena con un salto de línea (
0x0a) al final - Calcula automáticamente la longitud de cada cadena
- Imprime las tres cadenas usando la llamada al sistema write
- Sal del programa correctamente con el código 0
Pruébalo tú mismo
section .data
; TODO: Definir word1 con el 1.er texto listado en las instrucciones y salto de línea
; TODO: Definir word2 con el 2.º texto listado en las instrucciones y salto de línea
; TODO: Definir word3 con el 3.er texto listado en las instrucciones y salto de 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 limpiamente
Esta 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-64Practica por tu cuenta: Playground de Assembly