Menu
Coddy logo textTech

Der .data-Abschnitt

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

In Kapitel 2 haben Sie Werte aus dem Speicher geladen und Werte im Speicher gespeichert. Aber woher kam dieser Speicher? Wer hat num1, num2 und result erstellt?

Die Antwort ist der .data-Abschnitt. Hier erstellst du deine eigenen Daten im Speicher.

Was ist der .data-Abschnitt?

Der .data-Abschnitt ist ein Teil deines Assembly-Programms, in dem du Daten definierst, die im Speicher abgelegt werden, bevor dein Programm ausgeführt wird.

Syntax:

section .data
    ; Hier kommen Ihre Datendefinitionen hin

Warum du es brauchst:

Ohne .data-AbschnittMit .data-Abschnitt
Du hast keine Daten, mit denen du arbeiten kannstDu kannst Zahlen, Zeichenfolgen und Variablen erstellen
Speicheradressen sind unbekanntDu kannst Bezeichnungen wie myNumber oder message verwenden
Du kannst deinen Code nicht testenDu kannst von dir erstellte Daten laden und speichern

Ein einfaches Beispiel:

section .data
    age db 25           ; Erstelle ein Byte namens "age" mit dem Wert 25
    price dw 1000       ; Erstelle ein Word namens "price" mit dem Wert 1000
    name db 'Bob'       ; Erstelle einen String namens "name" mit den Buchstaben B, o, b

Wo es in Ihren Dateien steht:

Erinnern Sie sich an das Zwei-Dateien-Muster aus Kapitel 0:

DateiInhalt
data.asmsection .data mit Ihren Datendefinitionen
main.asm%include "data.asm" gefolgt von section .text mit Ihrem Code

Was passiert, wenn Ihr Programm ausgeführt wird:

  1. Das Betriebssystem lädt Ihr Programm in den Arbeitsspeicher
  2. Es liest den .data-Abschnitt und platziert Ihre Daten an spezifischen Speicheradressen
  1. Ihre Labels (age, price, name) werden zu Adressen
  2. Ihr Code kann nun unter Verwendung von [age], [price], [name] auf diese Adressen zugreifen

Wichtige Regeln:

RegelErklärung
Ein .data-Abschnitt pro ProgrammPlatzieren Sie alle Ihre Daten an einem Ort
Labels müssen eindeutig seinSie können nicht zwei age-Labels haben
Daten werden erstellt, bevor Ihr Code ausgeführt wirdSie sind einsatzbereit, wenn _start beginnt

In den nächsten Lektionen wirst du lernen, wie man verschiedene Datentypen mit db, dw, dd und dq definiert.

challenge icon

Aufgabe

Schreiben Sie den Code in der Datei data.asm, um:

  1. Die Sektion .data zu erstellen
  2. Ein Byte namens count mit dem Wert 5 zu erstellen

Probier es selbst

%include "data.asm"

section .text
    global _start

_start:
    ; Lade den Wert von count in al
    mov al, [count]
    
    ; Speichere ihn für die Ausgabe
    mov r12, rax
    
    ; In ASCII umwandeln und ausgeben (nur 0-9)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Beenden
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
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