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 erzeugt 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

Hinzufügen eines Zeilenumbruchs:

Um eine Zeichenfolge auszugeben und in die nächste Zeile zu springen, fügen Sie 0x0a (Zeilenumbruchzeichen) hinzu:

section .data
    message db 'Hello', 0x0a

Jetzt hat der String 6 Bytes: 'H','e','l','l','o', Newline

Mehrere Strings:

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

Warum das wichtig ist:

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

Wichtiger Hinweis:

Strings sind nur Bytes. Die CPU weiß nicht und es ist ihr egal, dass 'H' ein Buchstabe ist. Es ist einfach nur die Zahl 72. Der write-Syscall interpretiert diese Zahlen beim Drucken als Zeichen.

challenge icon

Aufgabe

Einfach

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

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