مقدمة البحث

الحمد لله الذي علّم الإنسان ما لم يعلم، والصلاة والسلام على نبينا محمد. أما بعد، فإن الحاسب الآلي الذي نستخدمه في الدراسة والعمل والترفيه لا يفهم إلا لغة واحدة هي الأصفار والآحاد، ومن أجل التخاطب معه ابتكر المبرمجون عبر الزمن لغات برمجة متعددة. ومن أقدم هذه اللغات وأقربها إلى الآلة لغة التجميع. وفي هذا البحث نتعرف على هذه اللغة وطريقة عملها وفائدتها.

﴿اقْرَأْ بِاسْمِ رَبِّكَ الَّذِي خَلَقَ (١) خَلَقَ الْإِنْسَانَ مِنْ عَلَقٍ (٢) اقْرَأْ وَرَبُّكَ الْأَكْرَمُ (٣) الَّذِي عَلَّمَ بِالْقَلَمِ (٤) عَلَّمَ الْإِنْسَانَ مَا لَمْ يَعْلَمْ (٥)﴾ [العلق: 1–5]

تعريف الموضوع

لغة التجميع (Assembly Language) لغة برمجة منخفضة المستوى تستبدل بالأوامر الثنائية التي يفهمها المعالج رموزًا مختصرة سهلة التذكر تسمى الرموز التذكيرية (Mnemonics)، مثل ADD للجمع وMOV للنقل. ولا يستطيع المعالج تنفيذ هذه الرموز مباشرة، فيتولى برنامج يسمى المجمّع (Assembler) ترجمتها إلى لغة الآلة. وتقابل كل تعليمة في لغة التجميع غالبًا تعليمة واحدة من تعليمات المعالج.

أهمية الموضوع

تكمن أهمية لغة التجميع في أنها تكشف لنا كيف يعمل الحاسب من الداخل: كيف تُخزَّن البيانات في الذاكرة وكيف ينفذ المعالج الأوامر. ومن يفهمها يصبح أقدر على كتابة برامج سريعة وفهم أخطاء البرمجة العميقة وتحليل البرامج، وتُستعمل في مواضع لا غنى فيها عن التحكم الدقيق بالعتاد.

أهداف البحث

  • التعرف على مفهوم لغة التجميع وموقعها بين لغات البرمجة.
  • بيان الفرق بين لغة الآلة ولغة التجميع واللغات عالية المستوى.
  • التعرف على المسجلات وأنواع التعليمات وبنية السطر في لغة التجميع.
  • تتبع مثال بسيط لبرنامج مكتوب بلغة التجميع.
  • معرفة مزايا اللغة وعيوبها ومجالات استخدامها.

عناصر البحث

أولًا: مستويات لغات البرمجة

المستوىالوصفأمثلة
لغة الآلةأوامر ثنائية يفهمها المعالج مباشرة، وهي صعبة القراءةسلاسل من الأصفار والآحاد
لغة التجميعرموز تذكيرية تقابل أوامر الآلة، وتخص نوعًا معينًا من المعالجاتx86 وARM
اللغات عالية المستوىقريبة من لغة الإنسان، وتُترجم بالمترجم أو المفسّرPython وJava وC++

ثانيًا: نشأة لغة التجميع

كان المبرمجون في بدايات الحواسيب يكتبون برامجهم بلغة الآلة مباشرة، وهي طريقة مرهقة كثيرة الأخطاء. فظهرت لغة التجميع في أربعينيات القرن العشرين وخمسيناته بوصفها حلًا يخفف هذا العناء، ثم ظهرت اللغات عالية المستوى التي حلّت محلها في أغلب التطبيقات، لكنها لم تختفِ بل بقيت في مجالاتها الخاصة.

ثالثًا: كيف تعمل لغة التجميع؟

  1. يكتب المبرمج البرنامج بالرموز التذكيرية في ملف نصي.
  2. يقوم المجمّع بقراءة الملف وترجمة كل تعليمة إلى لغة الآلة.
  3. يربط برنامج آخر يسمى الرابط (Linker) أجزاء البرنامج ويصنع ملفًا قابلًا للتنفيذ.
  4. ينفذ المعالج الملف التنفيذي تعليمة بعد تعليمة.

رابعًا: المسجلات

المسجلات (Registers) مواقع صغيرة جدًا وسريعة داخل المعالج نفسه، تُخزَّن فيها البيانات التي يعالجها حاليًا. وفي معمارية x86 مسجلات عامة الغرض مثل EAX وEBX وECX وEDX، ومنها مسجل مؤشر التعليمات الذي يشير إلى التعليمة التالية. وتختلف أسماء المسجلات وعددها من معالج إلى آخر، فلا يصلح برنامج مكتوب لمعالج على معالج مختلف المعمارية.

خامسًا: أنواع التعليمات

  • تعليمات نقل البيانات: مثل MOV لنقل قيمة إلى مسجل أو موضع في الذاكرة.
  • التعليمات الحسابية: مثل ADD وSUB للجمع والطرح.
  • التعليمات المنطقية: مثل AND وOR وNOT.
  • تعليمات التحكم: مثل JMP للقفز إلى موضع آخر وCMP للمقارنة، وبها تُبنى الشروط والتكرار.

سادسًا: مثال توضيحي

البرنامج التالي مكتوب بصيغة المعالجات من عائلة x86 ويجمع العددين خمسة وثلاثة:

FIVE equ 5

THREE equ 3

mov eax, FIVE ; put the value five in register EAX

add eax, THREE ; add three, so EAX now holds eight

السطران الأولان يعرّفان ثابتين باسمين، والتعليمة الأولى تنقل القيمة خمسة إلى المسجل EAX، والثانية تضيف إليه ثلاثة فتصبح النتيجة ثمانية داخل المسجل نفسه. وما بعد علامة الفاصلة المنقوطة تعليق للقارئ لا ينفذه المجمّع. وتقابل التعليمة الأولى في لغة الآلة بالنظام الست عشري هذه البايتات:

B8 05 00 00 00

وهكذا ترى أن الرمز التذكيري أسهل في القراءة من تلك الأرقام.

سابعًا: بنية سطر التجميع

يتكون السطر عادة من أربعة أجزاء اختيارية: اسم الوسم (Label) لتحديد موضع في البرنامج، ثم الرمز التذكيري، ثم المعاملات، ثم التعليق. وتسمح اللغة بتعريف ثوابت ومتغيرات ببيانات تُحجز لها مواضع في الذاكرة.

ثامنًا: مزايا لغة التجميع وعيوبها

المزاياالعيوب
سرعة عالية وبرامج صغيرة الحجمصعبة القراءة والكتابة بالنسبة للمبتدئ
تحكم كامل في العتاد والذاكرةتخص معمارية معالج معين فلا تنتقل بين الأجهزة
تساعد على فهم بنية الحاسبتحتاج إلى وقت طويل في التطوير ومراجعة الأخطاء

تاسعًا: مجالات الاستخدام

  • برمجة الأنظمة المدمجة وأجهزة التحكم الصغيرة.
  • كتابة أجزاء من أنظمة التشغيل وبرامج الإقلاع وبرامج تشغيل الأجهزة.
  • تحليل البرامج الخبيثة والهندسة العكسية.
  • تحسين أجزاء حرجة من البرامج تحتاج إلى أعلى سرعة.
  • تعليم مبادئ معمارية الحاسب في الجامعات.

عاشرًا: لماذا نتعلم لغة التجميع اليوم؟

قد يظن بعضهم أن لغة التجميع صارت من الماضي، والحقيقة أن كل برنامج نكتبه بأي لغة يتحول في النهاية إلى تعليمات تشبه ما كتبناه هنا. ولذلك فإن فهمها يعين المبرمج على معرفة ما يجري تحت الغطاء، ويجعله أقدر على تحسين برامجه وتجنب الأخطاء المتعلقة بالذاكرة. كما أن المتخصصين في أمن المعلومات يعتمدون عليها اعتمادًا كبيرًا عند تحليل الملفات المشبوهة التي لا يتوافر لها نص مصدري.

النتائج

  • لغة التجميع لغة منخفضة المستوى تمثل تعليمات المعالج برموز تذكيرية.
  • يترجمها المجمّع إلى لغة الآلة، وتقابل أغلب تعليماتها تعليمات المعالج مباشرة.
  • تتميز بالسرعة والتحكم بالعتاد، لكنها صعبة ولا تنتقل بين المعالجات المختلفة.
  • لا تزال مستخدمة في الأنظمة المدمجة وبرامج النظام وتحليل البرمجيات.

التوصيات

  • تعلّم أساسيات لغة التجميع لكل من يرغب في التخصص في هندسة الحاسب أو أمن المعلومات.
  • استخدام اللغات عالية المستوى لأغلب التطبيقات، وحصر التجميع في المواضع التي تحتاج إليه حقًا.
  • التدرب على محاكيات المعالجات التعليمية قبل التجربة على أجهزة حقيقية.

الخاتمة

تعرّفنا في هذا البحث على لغة التجميع بوصفها حلقة الوصل بين لغة الإنسان ولغة الآلة، وعلى المجمّع والمسجلات والتعليمات، وعلى مزاياها وعيوبها وميادين استعمالها. وتبقى دراستها مفيدة لكل من أراد أن يفهم الحاسب فهمًا عميقًا، والله ولي التوفيق.

المراجع

  • كتب الحاسب وتقنية المعلومات للمرحلة الثانوية، وزارة التعليم في المملكة العربية السعودية.
  • كتب معمارية الحاسب وتنظيمه الجامعية المنهجية.
  • أدلة المطورين الرسمية للمعالجات (Intel وArm) على مواقع الشركات.

كلمات دليلية

بحث، بحث عن، بحث علمي، بحوث، لغة التجميع