Imprimiendo dos cadenas
Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 40 de 45.
Ya sabes cómo imprimir una cadena. Pero ¿y si quieres imprimir dos cadenas separadas? Por ejemplo, "Hello " y después "World!"?
Simplemente llamas dos veces a la llamada al sistema write, una por cada cadena.
Cómo funciona:
; Primera impresión
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall
; Segunda impresión
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscallEjemplo:
section .data
first db 'Hello ', 0x0a
firstLen equ $-first
second db 'World!', 0x0a
secondLen equ $-second
section .text
global _start
_start:
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
mov rax, 60
mov rdi, 0
syscallSalida:
Hello
World!
Cada cadena termina con 0x0a (un salto de línea), así que las dos cadenas se imprimen en líneas separadas.
¿Por qué imprimir dos cadenas en lugar de una?
| Motivo | Ejemplo |
|---|---|
| Reutilización | Imprimir el mismo saludo con nombres diferentes |
| Flexibilidad | Imprimir mensajes diferentes según las condiciones |
| Organización | Mantener mensajes diferentes separados en la memoria |
Puedes imprimir tantas cadenas como quieras:
Simplemente repite la llamada al sistema write para cada cadena.
Desafío
Se te dan dos cadenas: partOne con el valor 'Good' y partTwo con el valor 'bye'. Ambas ya tienen un salto de línea al final.
Escribe el código para imprimir partOne y después partTwo para que la salida muestre:
Good
bye
La sección de datos y la llamada al sistema de salida ya están proporcionadas. Solo necesitas escribir las dos llamadas al sistema de escritura.
Pruébalo tú mismo
section .data
partOne db 'Good', 0x0a
partOneLen equ $-partOne
partTwo db 'bye', 0x0a
partTwoLen equ $-partTwo
section .text
global _start
_start:
; TODO: Imprime partOne usando la llamada al sistema write
; TODO: Imprime partTwo usando la llamada al sistema write
mov rax, 60
mov rdi, 0
syscall
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