Menu
CoddyTech
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 يحتوي على:

  • سلسلة نصية مع حساب تلقائي للطول
  • قيمة بايت
  • قيمة كلمة
  • قيمة كلمة مزدوجة
  • قيمة كلمة رباعية

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

مثال على ملف data.asm كامل:

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 الخاص بك، ويستخدم التسميات والأطوال التي عرّفتها.

التحدي

أنشئ ملف 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

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

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