Menu
CoddyTech

db - Definir Byte

Parte de la sección Fundamentos del Journey de Assembly de Coddy. Lección 24 de 45.

La forma más básica de crear datos en la memoria es db: Definir byte. Crea un byte (8 bits) de datos.

Sintaxis:

label db value
  • label: el nombre que le das a esta dirección de memoria
  • db: directiva Define Byte
  • value: el número o carácter que se almacenará (de 0 a 255)

Ejemplos:

section .data
    age db 25          ; Crea un byte llamado "age" que contiene 25
    grade db 'A'       ; Crea un byte llamado "grade" que contiene 65 (ASCII de 'A')
    zero db 0          ; Crea un byte llamado "zero" que contiene 0

Lo que puedes almacenar en un byte:

TipoRangoEjemplo
Número pequeño0 to 255db 100
Carácter'A' to 'z'db 'X'
Código ASCII0 to 255db 65 (igual que 'A')

Varios bytes en una línea:

Puedes definir varios bytes seguidos usando comas:

section .data
    numbers db 5, 10, 15, 20    ; Crea 4 bytes: 5, 10, 15, 20
    letters db 'A', 'B', 'C'    ; Crea 3 bytes: 65, 66, 67

Cómo usar un byte en tu código:

section .data
    myByte db 42

section .text
    mov al, [myByte]    ; Carga el valor 42 en al
    add al, 1           ; al pasa a ser 43
    mov [myByte], al    ; Guarda 43 de nuevo en myByte

Regla importante:

ReglaExplicación
El valor debe caber en 1 byteDe 0 a 255 (o un solo carácter)
Usa un registro de 8 bits, como al, para cargar o almacenaral (como bl, cl, dl) es un registro de 8 bits

Error común:

; Incorrecto: se intenta almacenar un número demasiado grande para un byte
section .data
    error db 300    ; 300 es demasiado grande (máximo 255)
challenge icon

Desafío

Fácil

Crea un byte llamado score con el valor 15 en la sección .data.

Escribe el archivo data.asm con la sección .data correcta y la directiva db.

Pruébalo tú mismo

%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 1
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Assembly