Menu
Coddy logo textTech

db ile Stringler

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

db komutunun tek bir bayt tanımladığını zaten biliyorsun. Ancak db bir dize de tanımlayabilir: arka arkaya gelen birden çok 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 sonraki satıra geçmek için 0x0a (yeni satır karakteri) ekleyin:

section .data
    message db 'Hello', 0x0a

Şimdi dize 6 bayt uzunluğunda: 'H','e','l','l','o', yeni satır

Birden fazla dize:

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

Bu neden önemli:

Dizeler, assembly'de kullanacağınız en yaygın verilerdir. write sistem çağrısı (5. Bölüm'de öğreneceksiniz), ona verdiğiniz uzunluğa ulaşana kadar bellekteki baytları okuyarak dizeleri yazdırır.

Önemli not:

Dizeler yalnızca baytlardır. CPU, 'H' karakterinin bir harf olduğunu bilmez ve bunu önemsemez. Bu yalnızca 72 sayısıdır. Yazdırma sırasında write sistem çağrısı 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 adlı bir dize oluşturun.

Kendin dene

%include "data.asm"

section .text
    global _start

_start:
    ; write syscall kullanarak dizeyi yazdır
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', newline = 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.

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

Kendi başına pratik yap: Assembly playground