Menu
Coddy logo textTech

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
syscall

Ejemplo:

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
    syscall

Resultado:

Hello World!

¿Por qué imprimir dos cadenas en lugar de una?

RazónEjemplo
ReutilizaciónImprimir el mismo saludo con diferentes nombres
FlexibilidadImprimir diferentes mensajes basados en condiciones
OrganizaciónMantener diferentes mensajes separados en memoria

Puedes imprimir tantas cadenas como quieras:

Simplemente repite la llamada al sistema write para cada cadena.

challenge icon

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
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