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

قسم .data

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

في الفصل الثاني، قمت بتحميل قيم من الذاكرة وتخزين قيم في الذاكرة. ولكن من أين أتت تلك الذاكرة؟ من الذي أنشأ num1 و num2 و result؟

الإجابة هي قسم .data. هذا هو المكان الذي تنشئ فيه بياناتك الخاصة في الذاكرة.

ما هو قسم .data؟

قسم .data هو جزء من برنامج لغة التجميع (assembly) الخاص بك حيث تقوم بتعريف البيانات التي سيتم تخزينها في الذاكرة قبل تشغيل برنامجك.

الصيغة:

section .data
    ; تعريفات البيانات الخاصة بك توضع هنا

لماذا تحتاج إليها:

بدون قسم .dataمع قسم .data
ليس لديك بيانات للعمل معهايمكنك إنشاء أرقام، وسلاسل نصية، ومتغيرات
عناوين الذاكرة غير معروفةيمكنك استخدام تسميات مثل myNumber أو message
لا يمكنك اختبار الكود الخاص بكيمكنك تحميل وتخزين البيانات التي أنشأتها

مثال بسيط:

section .data
    age db 25           ; إنشاء بايت يسمى "age" بقيمة 25
    price dw 1000       ; إنشاء كلمة (word) تسمى "price" بقيمة 1000
    name db 'Bob'       ; إنشاء سلسلة نصية تسمى "name" بالأحرف B، o، b

أين يوضع في ملفاتك:

تذكر نمط الملفين من الفصل 0:

الملفالمحتوى
data.asmsection .data مع تعريفات البيانات الخاصة بك
main.asm%include "data.asm" متبوعاً بـ section .text مع الكود الخاص بك

ماذا يحدث عندما يتم تشغيل برنامجك:

  1. يقوم نظام التشغيل بتحميل برنامجك في الذاكرة
  2. يقرأ قسم .data ويضع بياناتك في عناوين ذاكرة محددة
  1. تصبح تسمياتك (age، price، name) عناوين
  2. يمكن لكودك الآن الوصول إلى هذه العناوين باستخدام [age]، [price]، [name]

قواعد هامة:

القاعدةالشرح
قسم .data واحد لكل برنامجضع كل بياناتك في مكان واحد
يجب أن تكون التسميات (Labels) فريدةلا يمكنك الحصول على تسميتين باسم age
يتم إنشاء البيانات قبل تشغيل الكود الخاص بكتكون جاهزة للاستخدام عندما يبدأ _start

في الدروس القادمة، ستتعلم كيفية تعريف أنواع مختلفة من البيانات باستخدام db و dw و dd و dq

challenge icon

التحدي

اكتب الكود في ملف data.asm لـ:

  1. إنشاء قسم .data
  2. إنشاء بايت يسمى count بالقيمة 5

جرّب بنفسك

%include "data.asm"

section .text
    global _start

_start:
    ; تحميل القيمة من count إلى al
    mov al, [count]
    
    ; حفظها للطباعة
    mov r12, rax
    
    ; التحويل إلى ASCII والطباعة (0-9 فقط)
    add al, 48
    mov [digit], al
    
    mov rax, 1
    mov rdi, 1
    mov rsi, digit
    mov rdx, 1
    syscall
    
    ; الخروج
    mov rax, 60
    mov rdi, 0
    syscall

section .bss
    digit resb 1
quiz iconاختبر نفسك

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

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