ملخص: بناء data.asm
جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 30 من 45.
التحدي
لقد تعلمت عدة طرق لتعريف البيانات في قسم .data:
| الدرس | ما تعلمته |
|---|---|
| 3.1 | قسم .data — حيث توضع البيانات |
| 3.2 | db — تعريف بايت (1 بايت) |
| 3.3 | dw — تعريف كلمة (2 بايت) |
| 3.4 | dd — تعريف كلمة مزدوجة (4 بايت) |
| 3.5 | dq — تعريف كلمة رباعية (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 كاملاً يحتوي على ما يلي:
- نص يسمى
welcomeبقيمة 'Welcome!' متبوعاً بسطر جديد (0x0a) - ثابت يسمى
welcomeLenيحسب الطول تلقائياً باستخدام$ - welcome - بايت يسمى
scoreبقيمة 99 - كلمة تسمى
yearبقيمة 2025 - كلمة مزدوجة تسمى
populationبقيمة 8500000 - كلمة رباعية تسمى
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جميع دروس الأساسيات
4تعريف البيانات
قسم .datadb - تعريف Bytedw - تعريف Worddd - تعريف Double Worddq - تعريف Quad Wordالسلاسل النصية باستخدام dbالرمز $ملخص: بناء data.asm2أنظمة العد
لماذا النظام الثنائي؟الأعداد الثنائيةمن العشري إلى الثنائيلماذا النظام الست عشري؟من الست عشري إلى العشريمن العشري إلى الست عشريASCII والست عشري5استدعاء النظام Exit Syscall
ما هو الـ Syscall؟استدعاء النظام Exit Syscall (60)رموز الخروج (Exit Codes)ملخص: الخروج النظيف (Clean Exit)