Menu
Coddy logo textTech

A Seção .data

Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 23 de 45.

No Capítulo 2, você carregou valores da memória e armazenou valores na memória. Mas de onde veio essa memória? Quem criou num1, num2 e result?

A resposta é a seção .data. É aqui que você cria seus próprios dados na memória.

O que é a seção .data?

A seção .data é uma parte do seu programa em assembly onde você define dados que serão armazenados na memória antes de o seu programa ser executado.

Sintaxe:

section .data
    ; Suas definições de dados vão aqui

Por que você precisa disso:

Sem a seção .dataCom a seção .data
Você não tem dados para trabalharVocê pode criar números, strings e variáveis
Os endereços de memória são desconhecidosVocê pode usar rótulos como myNumber ou message
Você não pode testar seu códigoVocê pode carregar e armazenar dados que criou

Um exemplo simples:

section .data
    age db 25           ; Cria um byte chamado "age" com o valor 25
    price dw 1000       ; Cria uma word chamada "price" com o valor 1000
    name db 'Bob'       ; Cria uma string chamada "name" com as letras B, o, b

Onde isso entra nos seus arquivos:

Lembre-se do padrão de dois arquivos do Capítulo 0:

ArquivoConteúdo
data.asmsection .data com suas definições de dados
main.asm%include "data.asm" seguido por section .text com seu código

O que acontece quando seu programa é executado:

  1. O sistema operacional carrega seu programa na memória
  2. Ele lê a seção .data e coloca seus dados em endereços de memória específicos
  1. Seus rótulos (age, price, name) tornam-se endereços
  2. Seu código agora pode acessar esses endereços usando [age], [price], [name]

Regras importantes:

RegraExplicação
Uma seção .data por programaColoque todos os seus dados em um só lugar
Rótulos devem ser únicosVocê não pode ter dois rótulos age
Os dados são criados antes do seu código ser executadoEles estão prontos para uso quando _start começa

Nas próximas lições, você aprenderá como definir diferentes tipos de dados usando db, dw, dd, e dq

challenge icon

Desafio

Escreva o código no arquivo data.asm para:

  1. Criar a seção .data
  2. Criar um byte chamado count com o valor 5

Experimente você mesmo

%include "data.asm"

section .text
    global _start

_start:
    ; Carrega o valor de count em al
    mov al, [count]
    
    ; Salva para impressão
    mov r12, rax
    
    ; Converte para ASCII e imprime (apenas 0-9)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Sair
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
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