Menu
CoddyTech

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

Salida:

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?

MotivoEjemplo
ReutilizaciónImprimir el mismo saludo con nombres diferentes
FlexibilidadImprimir mensajes diferentes según las condiciones
OrganizaciónMantener mensajes diferentes separados en la 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 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
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

Practica por tu cuenta: Playground de Assembly