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 valuelabel: il nome che assegni a questo indirizzo di memoriadb: direttiva Define Bytevalue: il numero o 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 (codice ASCII di 'A')
zero db 0 ; Crea un byte chiamato "zero" contenente 0Cosa puoi memorizzare in un byte:
| Tipo | Intervallo | Esempio |
|---|---|---|
| Numero piccolo | 0 to 255 | db 100 |
| Carattere | 'A' to 'z' | db 'X' |
| Codice ASCII | 0 to 255 | db 65 (uguale 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, 67Come 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 myByteRegola importante:
| Regola | Spiegazione |
|---|---|
| Il valore deve rientrare in 1 byte | Da 0 a 255 (o un singolo carattere) |
Usa al per caricare o memorizzare | al è il registro a 8 bit per i byte |
Errore comune:
; Wrong: trying to store a number too large for a byte
section .data
error db 300 ; 300 is too big (max 255)Sfida
FacileCrea 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 1Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1La macchina
Che cos’è la CPUMemoriaRegistri vs memoriaCome funzionano le istruzioniSchema a due fileL’architettura x86-644Definizione dei dati
La sezione .datadb - Definire un bytedw - Definire una worddd - Definire una double worddq - Definire una quad wordStringhe con dbIl simbolo $Riepilogo: creare data.asm2Sistemi numerici
Perché il binario?Numeri binariDa decimale a binarioPerché l'esadecimale?Da esadecimale a decimaleDa decimale a esadecimaleASCII ed esadecimale5Chiamata di sistema di uscita
Cos'è una chiamata di sistema?Chiamata di sistema di uscita (60)Codici di uscitaRiepilogo: uscita correttaEsercitati da solo: Playground Assembly