db - Definir Byte
Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 24 de 45.
A maneira mais básica de criar dados na memória é db — Definir Byte. Ele cria um byte (8 bits) de dados.
Sintaxe:
label db valuelabel— o nome que você dá a este endereço de memóriadb— diretiva Define Bytevalue— o número ou caractere a ser armazenado (0 a 255)
Exemplos:
section .data
age db 25 ; Cria um byte chamado "age" contendo 25
grade db 'A' ; Cria um byte chamado "grade" contendo 65 (ASCII para 'A')
zero db 0 ; Cria um byte chamado "zero" contendo 0O que você pode armazenar em um byte:
| Tipo | Intervalo | Exemplo |
|---|---|---|
| Número pequeno | 0 a 255 | db 100 |
| Caractere | 'A' a 'z' | db 'X' |
| Código ASCII | 0 a 255 | db 65 (o mesmo que 'A') |
Múltiplos bytes em uma linha:
Você pode definir vários bytes em uma linha usando vírgulas:
section .data
numbers db 5, 10, 15, 20 ; Cria 4 bytes: 5, 10, 15, 20
letters db 'A', 'B', 'C' ; Cria 3 bytes: 65, 66, 67Como usar um byte em seu código:
section .data
myByte db 42
section .text
mov al, [myByte] ; Carrega o valor 42 em al
add al, 1 ; al torna-se 43
mov [myByte], al ; Armazena 43 de volta em myByteRegra importante:
| Regra | Explicação |
|---|---|
| O valor deve caber em 1 byte | 0 a 255 (ou um único caractere) |
Use al para carregar ou armazenar | al é o registrador de 8 bits para bytes |
Erro comum:
; Errado: tentando armazenar um número grande demais para um byte
section .data
error db 300 ; 300 é grande demais (máx 255)Desafio
FácilCrie um byte chamado score com o valor 15 na seção .data.
Escreva o arquivo data.asm com a seção .data correta e a diretiva db.
Experimente você mesmo
%include "data.asm"
section .text
global _start
_start:
mov al, [score]
mov r12, rax
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1A Máquina
O que é CPUMemóriaRegistradores vs MemóriaComo as instruções funcionamPadrão de Dois ArquivosA Arquitetura x86-644Definição de Dados
A Seção .datadb - Definir Bytedw - Definir Worddd - Definir Double Worddq - Definir Quad WordStrings com dbO Símbolo $Recapitulação: Build data.asm