Menu
CoddyTech

db - Definire un byte

Fa parte della sezione Fondamenti del percorso Assembly di Coddy. Lezione 24 di 45.

Il modo più semplice per creare dati in memoria è db: Definisci byte. Crea un byte (8 bit) di dati.

Sintassi:

label db value
  • label: il nome che assegni a questo indirizzo di memoria
  • db: direttiva Define Byte
  • value: il numero o il carattere da memorizzare (da 0 a 255)

Esempi:

section .data
    age db 25          ; Crea un byte chiamato "age" contenente 25
    grade db 'A'       ; Crea un byte chiamato "grade" contenente 65 (ASCII per 'A')
    zero db 0          ; Crea un byte chiamato "zero" contenente 0

Cosa puoi memorizzare in un byte:

TipoIntervalloEsempio
Numero piccolo0 to 255db 100
Carattere'A' to 'z'db 'X'
Codice ASCII0 to 255db 65 (equivale a 'A')

Più byte sulla stessa riga:

Puoi definire diversi byte di seguito usando le virgole:

section .data
    numbers db 5, 10, 15, 20    ; Crea 4 byte: 5, 10, 15, 20
    letters db 'A', 'B', 'C'    ; Crea 3 byte: 65, 66, 67

Come usare un byte nel tuo codice:

section .data
    myByte db 42

section .text
    mov al, [myByte]    ; Carica il valore 42 in al
    add al, 1           ; al diventa 43
    mov [myByte], al    ; Memorizza nuovamente 43 in myByte

Regola importante:

RegolaSpiegazione
Il valore deve rientrare in 1 byteDa 0 a 255 (o un singolo carattere)
Usa un registro a 8 bit come al per caricare o memorizzareal (come bl, cl, dl) è un registro a 8 bit

Errore comune:

; Sbagliato: si tenta di memorizzare un numero troppo grande per un byte
section .data
    error db 300    ; 300 è troppo grande (massimo 255)
challenge icon

Sfida

Facile

Crea un byte chiamato score con il valore 15 nella sezione .data.

Scrivi il file data.asm con la sezione .data corretta e la direttiva db.

Provalo tu

%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 1
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Assembly