Menu
CoddyTech

Newline ist wichtig

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

Du hast 0x0a (Zeilenumbruch) am Ende deiner Zeichenfolgen hinzugefügt. Aber was passiert, wenn du es vergisst?

Ohne Zeilenumbruch:

Der Text wird ausgegeben, aber der Cursor bleibt in derselben Zeile. Jede zukünftige Ausgabe erscheint direkt daneben.

Beispiel ohne Zeilenumbruch:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    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

Ausgabe:

HelloWorld

Kein Leerzeichen. Kein Zeilenumbruch. Alles klebt zusammen.

Mit Zeilenumbruch:

section .data
    first db 'Hello', 0x0a
    firstLen equ $ - first
    second db 'World', 0x0a
    secondLen equ $ - second

Ausgabe:

Hello World

Jede Zeichenkette wird in einer eigenen Zeile ausgegeben.

Was ein Zeilenumbruch bewirkt:

ZeichenASCIIWirkung
0x0a10Bewegt den Cursor an den Anfang der nächsten Zeile

Häufige Fehler bei Zeilenumbrüchen:

FehlerErgebnis
Überhaupt kein ZeilenumbruchDer Text läuft in einer Zeile zusammen
Zeilenumbruch nur am Ende der letzten ZeichenfolgeVorherige Zeichenfolgen laufen zusammen, die letzte wird in die nächste Zeile gesetzt
Zeilenumbruch mitten in einer ZeichenfolgeZeilenumbrüche an unerwarteten Stellen

Die sichere Regel:

Füge immer 0x0a am Ende jedes Strings hinzu, den du in einer eigenen Zeile haben möchtest.

challenge icon

Aufgabe

Dir werden drei Zeichenketten ohne Zeilenumbrüche gegeben. Deine Aufgabe ist es, sie so auszugeben, dass sie in drei separaten Zeilen erscheinen.

Die Zeichenketten sind:

ZeichenketteWert
word1'Apple'
word2'Banana'
word3'Cherry'

Anforderungen:

  • Definiere jede Zeichenkette mit einem Zeilenumbruch (0x0a) am Ende
  • Berechne die Länge jeder Zeichenkette automatisch
  • Gib alle drei Zeichenketten mit dem write-Systemaufruf aus
  • Beende das Programm ordnungsgemäß mit dem Code 0

Probier es selbst

section .data
    ; TODO: word1 mit dem ersten in der Aufgabenstellung aufgeführten Text und einem Zeilenumbruch definieren
    ; TODO: word2 mit dem zweiten in der Aufgabenstellung aufgeführten Text und einem Zeilenumbruch definieren
    ; TODO: word3 mit dem dritten in der Aufgabenstellung aufgeführten Text und einem Zeilenumbruch definieren
    ; TODO: Die Länge jeder Zeichenkette berechnen

section .text
    global _start

_start:
    ; TODO: word1 ausgeben
    ; TODO: word2 ausgeben
    ; TODO: word3 ausgeben

    ; TODO: Das Programm ordnungsgemäß beenden
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