db – Byte definieren
Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 24 von 45.
Die grundlegendste Möglichkeit, Daten im Speicher zu erstellen, ist db: Byte definieren. Es erstellt ein Byte (8 Bits) an Daten.
Syntax:
label db valuelabel: der Name, den du dieser Speicheradresse gibstdb: Direktive „Define Byte“value: die Zahl oder das Zeichen, das gespeichert werden soll (0 bis 255)
Beispiele:
section .data
age db 25 ; Erzeugt ein Byte namens "age" mit dem Wert 25
grade db 'A' ; Erzeugt ein Byte namens "grade" mit dem Wert 65 (ASCII für 'A')
zero db 0 ; Erzeugt ein Byte namens "zero" mit dem Wert 0Was du in einem Byte speichern kannst:
| Typ | Bereich | Beispiel |
|---|---|---|
| Kleine Zahl | 0 bis 255 | db 100 |
| Zeichen | 'A' bis 'z' | db 'X' |
| ASCII-Code | 0 bis 255 | db 65 (gleich 'A') |
Mehrere Bytes in einer Zeile:
Du kannst mehrere Bytes hintereinander mithilfe von Kommas definieren:
section .data
numbers db 5, 10, 15, 20 ; Erzeugt 4 Bytes: 5, 10, 15, 20
letters db 'A', 'B', 'C' ; Erzeugt 3 Bytes: 65, 66, 67So verwendest du ein Byte in deinem Code:
section .data
myByte db 42
section .text
mov al, [myByte] ; Lade den Wert 42 in al
add al, 1 ; al wird zu 43
mov [myByte], al ; Speichere 43 zurück in myByteWichtige Regel:
| Regel | Erklärung |
|---|---|
| Der Wert muss in 1 Byte passen | 0 bis 255 (oder ein einzelnes Zeichen) |
Verwende zum Laden oder Speichern ein 8-Bit-Register wie al | al (wie bl, cl, dl) ist ein 8-Bit-Register |
Häufiger Fehler:
; Falsch: Es wird versucht, eine zu große Zahl in einem Byte zu speichern
section .data
error db 300 ; 300 ist zu groß (maximal 255)Aufgabe
EinfachErstelle ein Byte namens score mit dem Wert 15 im Abschnitt .data.
Schreibe die Datei data.asm mit dem korrekten Abschnitt .data und der Direktive db.
Probier es selbst
%include "data.asm"
section .text
global _start
_start:
mov al, [score]
mov r12, rax
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Die Maschine
Was ist eine CPUSpeicherRegister vs. SpeicherWie Befehle funktionierenZwei-Dateien-MusterDie x86-64 ArchitekturÜbe selbstständig: Assembly-Playground