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 — múltiplos 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 mudar 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', quebra de linha

Múltiplas strings:

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

Por que isso é importante:

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.

Nota importante:

Strings são apenas bytes. A CPU não sabe ou 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 uma nova linha (0x0a) na seção .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