ما هي لغة أسمبلي 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

هل أعجبك المقال؟