Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

السلاسل النصية باستخدام db

جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 28 من 45.

أنت تعلم بالفعل أن db يُعرّف بايتاً واحداً. ولكن db يمكنه أيضاً تعريف سلسلة نصية — بايتات متعددة على التوالي.

الصيغة:

label db 'text here'

مثال:

section .data
    message db 'Hello'

هذا ينشئ 5 بايتات في الذاكرة: 'H', 'e', 'l', 'l', 'o'

ماذا يحدث في الذاكرة:

العنوانالبايتقيمة ASCII
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

إضافة سطر جديد:

لطباعة سلسلة نصية والانتقال إلى السطر التالي، أضف 0x0a (محرف سطر جديد):

section .data
    message db 'Hello', 0x0a

الآن تحتوي السلسلة النصية على 6 بايتات: 'H','e','l','l','o'، سطر جديد

سلاسل نصية متعددة:

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

لماذا يهم هذا:

تعد السلاسل النصية (Strings) أكثر أنواع البيانات شيوعاً التي ستستخدمها في لغة التجميع (assembly). يقوم استدعاء النظام write (الذي ستتعلمه في الفصل الخامس) بطباعة السلاسل النصية عن طريق قراءة البايتات من الذاكرة حتى يصل إلى الطول الذي تحدده له.

ملاحظة هامة:

السلاسل النصية هي مجرد بايتات. لا يعرف المعالج أو يهتم بأن 'H' هو حرف. إنه مجرد الرقم 72. يقوم استدعاء النظام write بتفسير تلك الأرقام كأحرف عند الطباعة.

challenge icon

التحدي

سهل

أنشئ سلسلة نصية تسمى greeting بالقيمة 'Hi' متبوعة بسطر جديد (0x0a) في قسم .data.

جرّب بنفسك

%include "data.asm"

section .text
    global _start

_start:
    ; طباعة السلسلة النصية باستخدام استدعاء النظام write
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', سطر جديد = 3 بايت
    syscall
    
    ; الخروج
    mov rax, 60
    mov rdi, 0
    syscall
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات