ما هي لغة أسمبلي Assembly
تنقسم لغات البرمجة وفقًا لأسلوب كتابتها وتعاملها مع الأجهزة الفيزيائية إلى عدة مستويات، ولكل مستوى منها ميزاته الخاصة وأيضًا تختلف الميزات باختلاف اللغة في نفس المستوى. وتنتمي لغة أسمبلي إلى المستوى المنخفض بين هذه اللغات وذلك لتعاملها المباشر مع الأجهزة الفيزيائية، ولم يتم إهمال هذه اللغة منذ بدايتها حتى الآن وتعد تخصصية جدًا.
تعريف لغة أسمبلي
لغة أسمبلي هي لغة برمجية ذات مستوى منخفض للمعالجات الصغرية والأجهزة الأخرى القابلة للبرمجة، وهي ليست لغة برمجة وحسب بل هي مجموعة لغات برمجة. وتمثل لغة أسمبلي تمثيلًا للغة الآلة بالرموز والتي نحتاجها عند برمجة أي نوع من معماريات المعالجات، وهي اللغة الأقرب على الاطلاق للغة المعالجات، وفيها يقوم المعالج بتنفيذ العمليات الفيزيائية بشكل مباشر، وبالرغم من الصعوبات البرمجية إلا أنها لا تزال مفيدة للمبرمجين عندما يحتاج المبرمج للسرعة بشكل كبير أو عندما يريد تنفيذ مهام غير مدعومة في اللغات البرمجية عالية المستوى.
مميزات لغة أسمبلي
إن فهم لغة أسمبلي يجعل المبرمج يفهم أيضًا:
- كيف تتعامل البرامج مع نظام التشغيل والمعالج والـBios.
- كيف يتم تمثيل البيانات في الذاكرة والأجهزة الخارجية الأخرى.
- كيف يمكن للمعالج الوصول وتنفيذ التعليمات.
- كيفية وصول التعليمات إلى البيانات ومعالجتها.
- كيف يصل البرنامج إلى الأجهزة الخارجية.
ومن مزاياها أيضًا:
هل برامج لغة أسمبلي قابلة للنقل؟
كلا، إن البرامج المكتوبة بلغة أسمبلي تكون مخصصة لمعمارية محددة من الأجهزة وعندما نكتب برنامجًا باستخدامها فبكل تأكيد يتوجب علينا إعادة كتابته بالكامل عند العمل مع معمارية مختلفة، وإن خاصية قابلة نقل البرامج تكون فقط في اللغات العالية المستوى.
برنامج أسمبلي
يتألف برنامج لغة
أسمبلي من ثلاث أجزاء:
- جزء خاص بالـData.
- جزء خاص بالـbss.
- جزء خاص بالـtext.
الجزء الخاص بالبيانات Data
يستخدم هذا الجزء
للتصريح عن البيانات والثوابت، ولا تتغير هذه البيانات أثناء التشغيل، يمكن هنا
تعريف متحولات ذات قيم ثابتة أو تحديد حجم التخزين المؤقت أو أسماء الملفات وما
إلى ذلك.
الجزء الخاص بالـbss
وهو الجزء الذي
يتم تعريف المتغيرات فيه، أي القيم التي ستتغير أثناء التشغيل.
الجزء الخاص بالنص Text
وهو الجزء الذي
يحوي الكود الحقيقي الأساسي للبرنامج، وهذا الجزء يجب أن يبدأ بتعريف global
_start والذي يخبر النواة أين سيبدأ هذا البرنامج بالتنفيذ.
شكل تعليمات لغة أسمبلي
نجد هنا مثالاً لبرنامج يطبع Hello World باستخدام لغة أسمبلي لنظام تشغيل ويندوز 10:
global _main
extern _printf
section .text
_main:
push message
call _printf
add esp, 4
ret
message:
db 'Hello, World!', 10, 0