Menu
Coddy logo textTech

Strings com db

Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 28 de 45.

Você já sabe que db define um único byte. Mas db também pode definir uma string: vários bytes em sequência.

Sintaxe:

label db 'text here'

Exemplo:

section .data
    message db 'Hello'

Isso cria 5 bytes na memória: 'H', 'e', 'l', 'l', 'o'

O que acontece na memória:

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

Adicionando uma nova linha:

Para imprimir uma string e passar para a próxima linha, adicione 0x0a (caractere de nova linha):

section .data
    message db 'Hello', 0x0a

Agora a string tem 6 bytes: 'H','e','l','l','o', newline

Múltiplas strings:

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

Por que isso importa:

Strings são os dados mais comuns que você usará em assembly. A syscall write (que você aprenderá no Capítulo 5) imprime strings lendo bytes da memória até atingir o comprimento que você fornecer.

Observação importante:

Strings são apenas bytes. A CPU não sabe nem se importa que 'H' seja uma letra. É apenas o número 72. A syscall write interpreta esses números como caracteres ao imprimir.

challenge icon

Desafio

Fácil

Crie uma string chamada greeting com o valor 'Hi' seguida por um newline (0x0a) na section .data.

Experimente você mesmo

%include "data.asm"

section .text
    global _start

_start:
    ; Imprime a string usando a syscall write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', nova linha = 3 bytes
    syscall
    
    ; Sair
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Assembly