Menu
CoddyTech

.data Bölümü

Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 23 / 45.

2. Bölümde, değerleri bellekten yüklediniz ve belleğe değerler kaydettiniz. Peki bu bellek nereden geldi? num1, num2 ve result'ı kim oluşturdu?

Yanıt .data bölümü. Bellekte kendi verilerini oluşturduğun yer burasıdır.

.data bölümü nedir?

.data bölümü, programınız çalışmadan önce bellekte saklanacak verileri tanımladığınız assembly programınızın bir parçasıdır.

Sözdizimi:

section .data
    ; Veri tanımlarınız buraya gelecek

Neden ihtiyacın var:

.data bölümü olmadan.data bölümüyle
Üzerinde çalışacak verin olmazSayılar, dizeler ve değişkenler oluşturabilirsin
Bellek adresleri bilinmezmyNumber veya message gibi etiketler kullanabilirsin
Kodunu test edemezsinOluşturduğun verileri yükleyip depolayabilirsin

Basit bir örnek:

section .data
    age db 25           ; Değeri 25 olan "age" adlı bir bayt oluştur
    price dw 1000       ; Değeri 1000 olan "price" adlı bir word oluştur
    name db 'Bob'       ; B, o, b harflerinden oluşan "name" adlı bir dize oluştur

Dosyalarınızda nereye eklenir:

Bölüm 0'daki iki dosyalı yapıyı hatırlayın:

Dosyaİçerik
data.asmVeri tanımlarınızla birlikte section .data
main.asmArdından kodunuzla birlikte section .text gelen %include "data.asm"

Programınız çalıştığında ne olur:

  1. İşletim sistemi programınızı belleğe yükler
  2. .data bölümünü okur ve verilerinizi belirli bellek adreslerine yerleştirir
  1. Etiketlerin (age, price, name) adreslere dönüşür
  2. Kodun artık bu adreslere [age], [price], [name] kullanarak erişebilir

Önemli kurallar:

KuralAçıklama
Verilerinizi bir arada tutunsection .data bölümünü birden fazla kez açabilirsiniz (birleştirici parçaları birleştirir), ancak data.asm içinde tek bir bölüm olması okumayı kolaylaştırır
Etiketler benzersiz olmalıdırİki age etiketiniz olamaz
Veriler, kodunuz çalışmadan önce oluşturulur_start başladığında kullanıma hazırdır

Sonraki derslerde db, dw, dd ve dq kullanarak farklı veri türlerini nasıl tanımlayacağınızı öğreneceksiniz.

challenge icon

Görev

data.asm dosyasına şu işlemleri gerçekleştirecek kodu yaz:

  1. .data bölümünü oluştur
  2. Değeri 5 olan count adlı bir bayt oluştur

Kendin dene

%include "data.asm"

section .text
    global _start

_start:
    ; count içindeki değeri al içine yükle
    mov al, [count]
    
    ; Yazdırmak için değeri kaydet
    mov r12, rax
    
    ; ASCII'ye dönüştür ve yazdır (yalnızca 0-9)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; Çıkış yap
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Assembly playground