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 qué pasa si quieres imprimir dos cadenas distintas? Por ejemplo, "Hello " y luego "World!"?
Simplemente llamas a la syscall write dos veces — una vez 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
syscallResultado:
Hello World!
¿Por qué imprimir dos cadenas en lugar de una?
| Razón | Ejemplo |
|---|---|
| Reutilización | Imprimir el mismo saludo con diferentes nombres |
| Flexibilidad | Imprimir diferentes mensajes basados en condiciones |
| Organización | Mantener diferentes mensajes separados en 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 luego partTwo para que la salida muestre:
Good
bye
La sección de datos y la syscall de salida ya están proporcionadas. Solo necesitas escribir las dos syscalls de escritura (write).
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:
; POR HACER: Imprimir partOne usando la llamada al sistema write
; POR HACER: Imprimir 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-64