Menu
CoddyTech

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 in fila.

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

Più stringhe:

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 finché non raggiunge la lunghezza che le indichi.

Nota importante:

Le stringhe sono solo byte. La CPU non sa né le importa che 'H' sia una lettera. È solo il numero 72. La chiamata di sistema 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

Trova il codice di qualsiasi carattere: Convertitore ASCII