.data Bölümü
Coddy'nin Assembly Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 23 / 45.
Bölüm 2'de, bellekten değerler yüklediniz ve belleğe değerler kaydettiniz. Peki bu bellek nereden geldi? num1, num2 ve result değerlerini kim oluşturdu?
Yanıt .data bölümü. Bellekte kendi verilerinizi oluşturduğunuz yer burasıdır.
.data bölümü nedir?
.data bölümü, programınız çalışmadan önce bellekte depolanacak verileri tanımladığınız assembly programınızın bir parçasıdır.
Sözdizimi:
section .data
; Veri tanımlamalarınız buraya gelirNeden ihtiyacınız var:
| .data bölümü olmadan | .data bölümüyle |
|---|---|
| Üzerinde çalışacağınız hiçbir veri olmaz | Sayılar, dizeler ve değişkenler oluşturabilirsiniz |
| Bellek adresleri bilinmez | myNumber veya message gibi etiketleri kullanabilirsiniz |
| Kodunuzu test edemezsiniz | Oluşturduğunuz verileri yükleyebilir ve depolayabilirsiniz |
Basit bir örnek:
section .data
age db 25 ; 25 değerine sahip "age" adında bir bayt oluştur
price dw 1000 ; 1000 değerine sahip "price" adında bir word oluştur
name db 'Bob' ; B, o, b harflerinden oluşan "name" adında bir dize oluşturDosyalarınızdaki yeri:
Bölüm 0'daki iki dosya desenini hatırlayın:
| Dosya | İçerik |
|---|---|
data.asm | veri tanımlamalarınızın bulunduğu section .data |
main.asm | %include "data.asm" ve ardından kodunuzun bulunduğu section .text |
Programınız çalıştığında ne olur:
- İşletim sistemi programınızı belleğe yükler
.databölümünü okur ve verilerinizi belirli bellek adreslerine yerleştirir
- Etiketleriniz (
age,price,name) adreslere dönüşür - Kodunuz artık
[age],[price],[name]kullanarak bu adreslere erişebilir
Önemli kurallar:
| Kural | Açıklama |
|---|---|
Program başına bir .data bölümü | Tüm verilerinizi tek bir yere koyun |
| Etiketler benzersiz olmalıdır | İki tane age etiketine sahip olamazsınız |
| Veriler kodunuz çalışmadan önce oluşturulur | _start başladığında kullanıma hazırdır |
Gelecek derslerde, db, dw, dd ve dq kullanarak farklı veri türlerini nasıl tanımlayacağınızı öğreneceksiniz.
Görev
data.asm dosyasındaki kodu şunları yapacak şekilde yazın:
.databölümünü oluşturun- Değeri 5 olan
countadlı bir bayt oluşturun
Kendin dene
%include "data.asm"
section .text
global _start
_start:
; count değerini al içine yükle
mov al, [count]
; Yazdırmak için kaydet
mov r12, rax
; ASCII'ye dönüştür ve yazdır (sadece 0-9)
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
; Çıkış
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Bu 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