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 die .data-Sektion. Hier erstellen Sie Ihre eigenen Daten im Speicher.

Was ist die .data-Sektion?

Die .data-Sektion ist ein Teil Ihres Assembler-Programms, in dem Sie Daten definieren, die im Speicher abgelegt werden, bevor Ihr Programm ausgeführt wird.

Syntax:

section .data
    ; Hier kommen Ihre Datendefinitionen hin

Warum man es braucht:

Ohne .data-SektionMit .data-Sektion
Sie haben keine Daten, mit denen Sie arbeiten könnenSie können Zahlen, Zeichenfolgen und Variablen erstellen
Speicheradressen sind unbekanntSie können Labels wie myNumber oder message verwenden
Sie können Ihren Code nicht testenSie können von Ihnen 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