Menu
CoddyTech

Zwei Strings ausgeben

Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 40 von 45.

Du weißt bereits, wie du eine Zeichenkette ausgibst. Aber was, wenn du zwei separate Zeichenketten ausgeben möchtest? Zum Beispiel „Hello “ und dann „World!“?

Du rufst den write-Systemaufruf einfach zweimal auf, einmal für jede Zeichenfolge.

So funktioniert es:

; Erste Ausgabe
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; Zweite Ausgabe
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

Beispiel:

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

Ausgabe:

Hello

World!

Jede Zeichenkette endet mit 0x0a (einem Zeilenumbruch), sodass die beiden Zeichenketten in getrennten Zeilen ausgegeben werden.

Warum zwei Zeichenfolgen statt einer ausgeben?

GrundBeispiel
WiederverwendbarkeitDieselbe Begrüßung mit verschiedenen Namen ausgeben
FlexibilitätJe nach Bedingungen verschiedene Nachrichten ausgeben
OrganisationVerschiedene Nachrichten im Speicher getrennt halten

Du kannst so viele Zeichenketten ausgeben, wie du möchtest:

Wiederhole einfach den write-Systemaufruf für jede Zeichenkette.

challenge icon

Aufgabe

Dir werden zwei Zeichenfolgen gegeben: partOne mit dem Wert 'Good' und partTwo mit dem Wert 'bye'. Beide haben bereits einen Zeilenumbruch am Ende.

Schreibe den Code, um partOne und dann partTwo auszugeben, sodass die Ausgabe Folgendes zeigt:

Good

bye

Der Datenabschnitt und der Exit-Systemaufruf sind bereits vorgegeben. Du musst nur die beiden write-Systemaufrufe schreiben.

Probier es selbst

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

section .text
    global _start

_start:
    ; TODO: Gib partOne mit dem write-Systemaufruf aus
    ; TODO: Gib partTwo mit dem write-Systemaufruf aus

    mov rax, 60
    mov rdi, 0
    syscall
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Assembly-Playground