Menu
CoddyTech

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 eine Zeichenfolge definieren: mehrere Bytes hintereinander.

Syntax:

label db 'text here'

Beispiel:

section .data
    message db 'Hello'

Dadurch werden 5 Bytes im Speicher erzeugt: '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 Zeichenfolge auszugeben und zur nächsten Zeile zu wechseln, füge 0x0a (Zeilenumbruchzeichen) hinzu:

section .data
    message db 'Hello', 0x0a

Jetzt hat die Zeichenkette 6 Bytes: 'H','e','l','l','o', Zeilenumbruch

Mehrere Zeichenfolgen:

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

Warum das wichtig ist:

write-Systemaufruf (den du in Kapitel 5 kennenlernen wirst) gibt Zeichenketten aus, indem er Bytes aus dem Speicher liest, bis er die Länge erreicht, die du ihm angibst.

Wichtiger Hinweis:

Zeichenketten sind einfach nur Bytes. Die CPU weiß nicht und interessiert sich auch nicht dafür, dass „H“ ein Buchstabe ist. Es ist einfach die Zahl 72. Der write-Systemaufruf interpretiert diese Zahlen beim Ausgeben als Zeichen.

challenge icon

Aufgabe

Einfach

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

Probier es selbst

%include "data.asm"

section .text
    global _start

_start:
    ; Die Zeichenkette mit dem write-Systemaufruf 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

Schlag den Code jedes Zeichens nach: ASCII-Konverter