Menu
Coddy logo textTech

db ile Stringler

Coddy'nin Assembly Journey'sinin Temeller bölümünün bir parçası — ders 28 / 45.

Bildiğiniz gibi db tek bir bayt tanımlar. Ancak db bir dizeyi de tanımlayabilir — arka arkaya birden fazla bayt.

Sözdizimi:

label db 'text here'

Örnek:

section .data
    message db 'Hello'

Bu, bellekte 5 bayt oluşturur: 'H', 'e', 'l', 'l', 'o'

Bellekte ne olur:

AdresBaytASCII değeri
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

Yeni satır ekleme:

Bir dizeyi yazdırmak ve bir sonraki satıra geçmek için 0x0a (yeni satır karakteri) ekleyin:

section .data
    message db 'Hello', 0x0a

Artık dize 6 bayta sahip: 'H','e','l','l','o', newline

Birden fazla dize:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

Bu neden önemlidir:

Dizeler (Strings), assembly'de kullanacağınız en yaygın veri türüdür. write sistem çağrısı (Bölüm 5'te öğreneceğiniz), verdiğiniz uzunluğa ulaşana kadar bellekten baytları okuyarak dizeleri yazdırır.

Önemli not:

Dizeler sadece baytlardır. CPU, 'H'nin bir harf olduğunu bilmez veya umursamaz. O sadece 72 sayısıdır. write sistem çağrısı, yazdırırken bu sayıları karakter olarak yorumlar.

challenge icon

Görev

Kolay

.data bölümünde, değeri 'Hi' ve ardından bir yeni satır (0x0a) olan greeting adında bir dize oluşturun.

Kendin dene

%include "data.asm"

section .text
    global _start

_start:
    ; write sistem çağrısını kullanarak dizeyi yazdır
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', yeni satır = 3 bayt
    syscall
    
    ; Çıkış
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconKendini test et

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

Temeller bölümündeki tüm dersler