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