Menu
Coddy logo textTech

Stringhe con db

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

Sai già che db definisce un singolo byte. Ma db può anche definire una stringa: più byte consecutivi.

Sintassi:

label db 'text here'

Esempio:

section .data
    message db 'Hello'

Questo crea 5 byte in memoria: 'H', 'e', 'l', 'l', 'o'

Cosa succede in memoria:

IndirizzoByteValore ASCII
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

Aggiungere una nuova riga:

Per stampare una stringa e passare alla riga successiva, aggiungi 0x0a (carattere di nuova riga):

section .data
    message db 'Hello', 0x0a

Ora la stringa ha 6 byte: 'H','e','l','l','o', newline

Stringhe multiple:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

Perché è importante:

Le stringhe sono i dati più comuni che userai in assembly. La chiamata di sistema write (che imparerai nel capitolo 5) stampa le stringhe leggendo i byte dalla memoria fino a raggiungere la lunghezza che le indichi.

Nota importante:

Le stringhe sono solo byte. Alla CPU non importa e non sa che 'H' è una lettera. È semplicemente il numero 72. La syscall write interpreta quei numeri come caratteri quando li stampa.

challenge icon

Sfida

Facile

Crea una stringa chiamata greeting con il valore 'Hi' seguito da un carattere di nuova riga (0x0a) nella sezione .data.

Provalo tu

%include "data.asm"

section .text
    global _start

_start:
    ; Stampa la stringa usando la chiamata di sistema write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', carattere di nuova riga = 3 byte
    syscall
    
    ; Esci
    mov rax, 60
    mov rdi, 0
    syscall
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