Menu
Coddy logo textTech

Zwei Strings ausgeben

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

Du weißt bereits, wie man einen String ausgibt. Aber was ist, wenn du zwei separate Strings ausgeben möchtest? Zum Beispiel "Hello " und dann "World!"?

Sie rufen einfach den write-Systemaufruf zweimal auf — einmal für jede Zeichenfolge.

Wie es funktioniert:

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

Warum zwei Strings statt einem ausgeben?

GrundBeispiel
WiederverwendbarkeitDieselbe Begrüßung mit verschiedenen Namen ausgeben
FlexibilitätVerschiedene Nachrichten basierend auf Bedingungen ausgeben
OrganisationVerschiedene Nachrichten getrennt im Speicher halten

Sie können so viele Strings ausgeben, wie Sie möchten:

Wiederholen Sie einfach den write syscall für jeden String.

challenge icon

Aufgabe

Gegeben sind zwei Strings: partOne mit dem Wert 'Good' und partTwo mit dem Wert 'bye'. Beide haben bereits einen Zeilenumbruch am Ende.

Schreiben Sie den Code, um partOne und dann partTwo auszugeben, sodass die Ausgabe wie folgt aussieht:

Good

bye

Der data-Abschnitt und der exit-syscall sind bereits vorhanden. Sie müssen nur die beiden write-syscalls 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: partOne mit dem write-Syscall ausgeben
    ; TODO: partTwo mit dem write-Syscall ausgeben

    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