Menu
CoddyTech

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 os dados que serão armazenados na memória antes da execução do programa.

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 os dados que criou

Um exemplo simples:

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

Onde isso fica 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 de 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) se tornam endereços
  2. Seu código agora pode acessar esses endereços usando [age], [price], [name]

Regras importantes:

RegraExplicação
Mantenha seus dados juntosVocê poderia abrir section .data mais de uma vez (o montador junta as partes), mas uma única seção em data.asm é mais fácil de ler
Os rótulos devem ser exclusivosVocê não pode ter dois rótulos age
Os dados são criados antes da execução do seu códigoEles estão prontos para uso quando _start começa

Nas próximas lições, você aprenderá a 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:
    ; Carregue o valor de count em al
    mov al, [count]
    
    ; Salve-o para impressão
    mov r12, rax
    
    ; Converta para ASCII e imprima (apenas 0-9)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Encerre o programa
    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

Pratique por conta própria: Playground de Assembly