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

الآن يحتوي string على 6 bytes: 'H','e','l','l','o', newline

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

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

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

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

ملاحظة مهمة:

السلاسل النصية هي مجرد bytes. لا تعرف وحدة المعالجة المركزية ولا تهتم بأن الحرف '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اختبر نفسك

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

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

تدرّب بنفسك: Playground لـ Assembly