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

ملخص: بناء data.asm

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

challenge icon

التحدي

لقد تعلمت عدة طرق لتعريف البيانات في قسم .data:

الدرسما تعلمته
3.1قسم .data — حيث توضع البيانات
3.2db — تعريف بايت (1 بايت)
3.3dw — تعريف كلمة (2 بايت)
3.4dd — تعريف كلمة مزدوجة (4 بايت)
3.5dq — تعريف كلمة رباعية (8 بايت)
3.6النصوص باستخدام db — إنشاء النصوص
3.7الرمز $ — حساب أطوال النصوص تلقائياً

الآن حان الوقت لتجميع كل شيء وبناء ملف data.asm كامل.

ما ستنشئه في هذا التحدي:

ملف data.asm يحتوي على:

  • نص مع حساب تلقائي للطول
  • قيمة بايت (byte)
  • قيمة كلمة (word)
  • قيمة كلمة مزدوجة (double word)
  • قيمة كلمة رباعية (quad word)

كلها منظمة بشكل صحيح في قسم .data.

مثال على ملف <strong>data.asm</strong> كامل:

section .data
    ; String with automatic length
    msg db 'Hello', 0x0a
    msgLen equ $ - msg
    
    ; Numbers of different sizes
    smallNum db 100
    mediumNum dw 5000
    largeNum dd 100000
    veryLarge dq 5000000000

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

في الفصول القادمة، ستستخدم ملفات data.asm مثل هذه لتخزين البيانات التي تحتاجها برامجك. سيقوم ملف main.asm بتضمين ملف data.asm الخاص بك واستخدام العناوين (labels) والأطوال التي قمت بتعريفها.

التحدي

أنشئ ملف data.asm كاملاً يحتوي على ما يلي:

  1. نص يسمى welcome بقيمة 'Welcome!' متبوعاً بسطر جديد (0x0a)
  2. ثابت يسمى welcomeLen يحسب الطول تلقائياً باستخدام $ - welcome
  3. بايت يسمى score بقيمة 99
  4. كلمة تسمى year بقيمة 2025
  5. كلمة مزدوجة تسمى population بقيمة 8500000
  6. كلمة رباعية تسمى stars بقيمة 100000000000

كل ذلك داخل قسم .data.

جرّب بنفسك

%include "data.asm"

section .text
    global _start

_start:
    ; طباعة سلسلة الترحيب
    mov rax, 1
    mov rdi, 1
    mov rsi, welcome
    mov rdx, welcomeLen
    syscall
    
    ; الخروج
    mov rax, 60
    mov rdi, 0
    syscall

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