Menu
Coddy logo textTech

Strings mit db

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

Du weißt bereits, dass db ein einzelnes Byte definiert. Aber db kann auch einen String definieren: mehrere Bytes hintereinander.

Syntax:

label db 'text here'

Beispiel:

section .data
    message db 'Hello'

Dies erstellt 5 bytes im Speicher: 'H', 'e', 'l', 'l', 'o'

Was im Speicher passiert:

AdresseByteASCII-Wert
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

Einen Zeilenumbruch hinzufügen:

Um eine string auszugeben und in die nächste Zeile zu wechseln, füge 0x0a hinzu (newline character):

section .data
    message db 'Hello', 0x0a

Jetzt hat string 6 bytes: 'H','e','l','l','o', newline

Mehrere Zeichenketten:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

Warum das wichtig ist:

Strings sind die häufigsten Daten, die du in Assembly verwenden wirst. Der write-syscall (den du in Kapitel 5 kennenlernen wirst) gibt Strings aus, indem er Bytes aus dem Speicher liest, bis er die von dir angegebene Länge erreicht.

Wichtiger Hinweis:

Strings sind einfach bytes. Die CPU weiß nicht und kümmert sich nicht darum, dass „H“ ein Buchstabe ist. Es ist einfach die Zahl 72. Der write-syscall interpretiert diese Zahlen beim Ausgeben als Zeichen.

challenge icon

Aufgabe

Einfach

Erstelle im Abschnitt .data einen String namens greeting mit dem Wert 'Hi', gefolgt von einem Zeilenumbruch (0x0a).

Probier es selbst

%include "data.asm"

section .text
    global _start

_start:
    ; Den String mit dem write-Syscall ausgeben
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', Zeilenumbruch = 3 Bytes
    syscall
    
    ; Beenden
    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