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

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

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

challenge icon

التحدي

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

الدرسما تعلّمته
3.1قسم .data، حيث توضع البيانات
3.2db: تعريف byte (1 بايت)
3.3dw: تعريف word (2 بايت)
3.4dd: تعريف double word (4 بايت)
3.5dq: تعريف quad word (8 بايت)
3.6السلاسل النصية باستخدام db: إنشاء text
3.7رمز $: حساب أطوال السلاسل النصية automatic

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

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

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

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

التحدي

أنشئ ملف data.asm كاملًا يتضمن ما يلي:

  1. String يسمى welcome وتكون قيمته 'Welcome!' متبوعة بسطر جديد (0x0a)
  2. ثابت يسمى welcomeLen يحسب length تلقائيًا باستخدام $ - welcome
  3. قيمة byte تسمى score وقيمتها 99
  4. قيمة word تسمى year وقيمتها 2025
  5. قيمة double word تسمى population وقيمتها 8500000
  6. قيمة quad word تسمى 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