Menu
CoddyTech

Stampare due stringhe

Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 40 di 45.

Sai già come stampare una stringa. Ma cosa succede se vuoi stampare due stringhe separate? Per esempio, "Hello " e poi "World!"?

Ti basta chiamare la chiamata di sistema write due volte, una per ciascuna stringa.

Come funziona:

; Prima stampa
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; Seconda stampa
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

Esempio:

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

Output:

Hello

World!

Ogni stringa termina con 0x0a (un carattere di nuova riga), quindi le due stringhe vengono stampate su righe separate.

Perché stampare due stringhe invece di una?

MotivoEsempio
RiutilizzabilitàStampa lo stesso saluto con nomi diversi
FlessibilitàStampa messaggi diversi in base alle condizioni
OrganizzazioneMantieni i messaggi diversi separati in memoria

Puoi stampare tutte le stringhe che vuoi:

Ripeti semplicemente la syscall write per ogni stringa.

challenge icon

Sfida

Ti vengono date due stringhe: partOne con valore 'Good' e partTwo con valore 'bye'. Entrambe hanno già un carattere di nuova riga alla fine.

Scrivi il codice per stampare partOne e poi partTwo, in modo che l'output mostri:

Good

bye

La sezione dei dati e la chiamata di sistema per uscire sono già fornite. Devi solo scrivere le due chiamate di sistema di scrittura.

Provalo tu

section .data
    partOne db 'Good', 0x0a
    partOneLen equ $-partOne
    partTwo db 'bye', 0x0a
    partTwoLen equ $-partTwo

section .text
    global _start

_start:
    ; TODO: stampa partOne usando la chiamata di sistema write
    ; TODO: stampa partTwo usando la chiamata di sistema write

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Assembly