Menu
Coddy logo textTech

db - definiowanie bajtu

Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 24 z 45.

Najbardziej podstawowym sposobem tworzenia danych w pamięci jest db: Definiuj bajt. Tworzy jeden bajt (8 bitów) danych.

Składnia:

label db value
  • label: nazwa, którą nadajesz temu adresowi pamięci
  • db: dyrektywa Define Byte
  • value: liczba lub znak do zapisania (od 0 do 255)

Przykłady:

section .data
    age db 25          ; Tworzy bajt o nazwie "age" zawierający 25
    grade db 'A'       ; Tworzy bajt o nazwie "grade" zawierający 65 (kod ASCII znaku 'A')
    zero db 0          ; Tworzy bajt o nazwie "zero" zawierający 0

Co możesz przechowywać w jednym bajcie:

TypZakresPrzykład
Mała liczba0 do 255db 100
Znak'A' do 'z'db 'X'
Kod ASCII0 do 255db 65 (tak samo jak 'A')

Wiele bajtów w jednym wierszu:

Możesz zdefiniować kilka bajtów po kolei, używając przecinków:

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

Jak używać bajtu w kodzie:

section .data
    myByte db 42

section .text
    mov al, [myByte]    ; Załaduj wartość 42 do al
    add al, 1           ; al przyjmuje wartość 43
    mov [myByte], al    ; Zapisz 43 z powrotem w myByte

Ważna zasada:

ZasadaWyjaśnienie
Wartość musi mieścić się w 1 bajcieOd 0 do 255 (lub pojedynczy znak)
Użyj al, aby wczytać lub zapisaćal to 8-bitowy rejestr dla bajtów

Częsty błąd:

; Błąd: próba zapisania liczby zbyt dużej, by zmieściła się w jednym bajcie
section .data
    error db 300    ; 300 jest zbyt dużą wartością (maks. 255)
challenge icon

Wyzwanie

Łatwy

Utwórz bajt o nazwie score i wartości 15 w sekcji .data.

Zapisz plik data.asm z poprawną sekcją .data i dyrektywą db.

Spróbuj swoich sił

%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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Assembly