أنواع التعليمات في لغة التجميع: دليل كامل

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

لغة الآلة وتنسيق التعليمات

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

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

ما هي التعليمات في لغة التجميع؟

تعليمات لغة التجميع هي أوامر يفهمها المعالج المركزي مباشرةً (بعد ترجمتها إلى لغة الآلة بواسطة برنامج التجميع). لكل تعليمة غرض محدد، وعادةً ما تتكون من رمز يُمثل العملية، ومعامل واحد أو أكثر يُشير إلى مكان أخذ البيانات و/أو مكان تخزين النتائج.

تعتمد هذه التعليمات بشكل كبير على بنية المعالج، لذلك فإن كل نوع من وحدات المعالجة المركزية (سواء x86 أو ARM أو MIPS أو غيرها) لديه مجموعة خاصة به من التعليمات ذات بناء الجملة والقدرات المحددة.

هيكل التعليمات

تتكون التعليمات عادة من جزأين:

  • رمز العملية (opcode): يشير إلى الإجراء الذي يجب تنفيذه، مثل إضافة البيانات ونقلها ومقارنتها وما إلى ذلك.

تُوفّر المعاملات المعلومات اللازمة لتنفيذ العملية، ويمكن تخزينها في المسجلات أو الذاكرة أو أن تكون ثوابت. لا تتطلب جميع التعليمات معاملات، وفي بعض الحالات، قد تكون هذه المعاملات ضمنية في التعليمات نفسها أو مخزنة في مسجلات مُحددة مسبقًا.

أنواع التعليمات في لغة التجميع

اعتمادًا على الوظيفة التي تؤديها داخل البرنامج، يمكن تصنيف تعليمات لغة التجميع إلى عدة مجموعات. وفيما يلي تفصيل لأهمها:

1. تعليمات نقل البيانات

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

  دليل كامل للبحث في الوقت الحقيقي في Laravel

بعض التعليمات الأكثر شيوعًا في هذه المجموعة هي:

  • موف: نسخ محتويات أحد المتعاملين إلى آخر. على سبيل المثال، MOV AX, BX انسخ محتويات BX إلى AX.
  • MOVS / MOVSB ​​​​/ MOVSW: ينقل السلاسل من عنوان المصدر (SI) إلى عنوان الوجهة (DI)، مما يؤدي إلى أتمتة عملية النقل.
  • LODS / LODSB / LODSW: يقوم بتحميل قيمة من العنوان المشار إليه بواسطة سجل SI إلى المجمع (AL أو AX).
  • يقرأ: يقوم بتحميل عنوان فعال بدلاً من القيمة. مفيد للحصول على عنوان متغير أو هيكل.

2. تعليمات البطارية

المكدس عبارة عن بنية LIFO (آخر ما يدخل، أول ما يخرج) تستخدم لتخزين البيانات مؤقتًا، أو تمرير المعلمات، أو حفظ سياق التنفيذ.

  • يدفع: يقوم بتخزين قيمة على المكدس، مما يؤدي إلى تقليل مؤشر SP.
  • POP: استرداد أحدث قيمة مخزنة على المكدس، مع زيادة SP.
  • دفع / POPF: يقومون بتخزين واسترجاع حالة علامات وحدة المعالجة المركزية الموجودة على المكدس.

3. التعليمات الحسابية والمنطقية

تتيح هذه التعليمات إجراء العمليات الحسابية على البتات. وهي ضرورية لمعالجة البيانات الرقمية واتخاذ القرارات في مسار البرنامج.

ومن بين الأكثر استخدامًا نجد:

  • إضافة / اشتراك: الجمع والطرح.
  • مول / إمول: الضرب الثنائي.
  • القسم / الهوية: القسمة (عدد صحيح أو إشارة).
  • و/أو/XOR/لا: العمليات المنطقية بالبت.
  • SHL / SHR / ROL / ROR: تحولات البتات والدوران.

4. تعليمات التحكم في التدفق

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

  • الاجتماع المشترك: ينتقل دون قيد أو شرط إلى عنوان آخر في البرنامج.
  • الاتصال / الاسترجاع: استدعاء إلى برنامج فرعي والعودة.
  • JE/JNE/JG/JL/JZ/JNZ: القفزات الشرطية، يتم تنفيذها إذا تم استيفاء شروط معينة (بعد المقارنة).

5. تعليمات الإدخال/الإخراج (I/O)

تُمكّن هذه التعليمات من التواصل بين المعالج والأجهزة الخارجية. كما تسمح بقراءة البيانات وكتابتها من وإلى المنافذ (المكونات المادية).

  • في: يقوم بقراءة البيانات من منفذ الإدخال.
  • خارج: يرسل البيانات إلى منفذ الإخراج.

6. تعليمات النقطة العائمة

تحتوي العديد من وحدات المعالجة المركزية على معالجات رياضية مساعدة (أو تعليمات خاصة) مخصصة للتعامل مع الأرقام العشرية (ذات الفاصلة العائمة). تسمح هذه التعليمات بإجراء عمليات مثل:

  • الجمع والطرح والضرب والقسمة للأعداد الحقيقية.
  • العمليات المثلثية (الجيب، جيب التمام، الظل).
  • العمليات اللوغاريتمية والأسية والجذرية.
  GitHub Copilot: كل ما تحتاج إلى معرفته حول برمجة الذكاء الاصطناعي

تتوافق هذه التعليمات عادةً مع معيار IEEE 754 للدقة العددية.

أوضاع العنونة

يُعد تحديد موقع المعاملات جزءًا أساسيًا من تصميم التعليمات. وتُحدد أنماط العنونة كيفية وصول وحدة المعالجة المركزية إلى البيانات.

1. المعالجة الفورية

تُضمّن البيانات مباشرةً في التعليمات. إنها سريعة، لكنها لا تسمح بتعديل القيم دون تغيير التعليمات.

MOV AX, 5

2. المعالجة المباشرة

يتم تحديد عنوان الذاكرة التي تحتوي على البيانات صراحةً.

MOV AX, 

3. المخاطبة غير المباشرة

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

MOV AX, 

4. العنونة المفهرسة

يتم حساب العنوان بإضافة أساس وفهرس (على سبيل المثال، لاجتياز المصفوفات). ويستخدم سجلات خاصة مثل SI وDI أو سجلات الأساس + الإزاحة.

MOV AX, 

تنسيقات التعليمات: أنواع مختلفة حسب البنية

قد يختلف هيكل التعليمات حسب الهندسة المعمارية. تتضمن التنسيقات الشائعة ما يلي:

تنسيق رباعي الاتجاهات

يتضمن هذا الأسلوب مُعاملين، وموقع النتيجة، وعنوان التعليمات التالية. وقد أصبح الآن أسلوباً قديماً نظراً لتعقيده.

تنسيق رباعي الاتجاهات

يحدد هذا الأمر معاملين وعنوان وجهة. وهو شائع في معمارية RISC الحديثة.

تنسيق رباعي الاتجاهات

استخدم مُعامل مصدر ومُعامل وجهة (يمكن أن تُساهم الوجهة أيضًا بقيمة). شائع في معمارية x86 وغيرها من معمارية CISC.

تنسيق أحادي الاتجاه

يتم تحديد معامل واحد فقط؛ ويُفترض أن الآخر هو المُراكم. شائع في المعالجات القديمة والأنظمة البسيطة.

تنسيق العنوان 0 (يعتمد على المكدس)

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

تعليمات الماكرو والأكواد شبه التشغيلية

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

الكثير أكواد العمليات الزائفة إنها تعليمات يقوم المجمع بترجمتها داخليًا إلى تسلسل حقيقي من التعليمات. على سبيل المثال، NOP (لا يوجد عملية) يمكن ترجمتها إلى XCHG AX, AX على وحدة المعالجة المركزية x86.

  كيفية إنشاء مساعد صوتي محلي باستخدام مساعد المنزل

توجيهات التجميع

التوجيهات ( وتسمى أيضاً العمليات الزائفة ) ليست تعليمات بالمعنى الدقيق للكلمة. فهي تُستخدم للتحكم في عملية التجميع، وتحديد البيانات، وأقسام التعليمات البرمجية، ووحدات الماكرو، وشروط التجميع، وما إلى ذلك.

وتشمل الأمثلة الشائعة ما يلي:

  • .data / .code: إنها تشير إلى قسم البيانات أو الكود.
  • كافيه: تعيين العنوان الذي سيبدأ منه التجميع.
  • .equ: يحدد الثوابت الرمزية.

حالات استخدام لغة التجميع

على الرغم من ظهور لغات البرمجة عالية المستوى، إلا أن لغة التجميع لا تزال أساسية في العديد من المجالات:

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

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

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

لغة التجميع
مقالة ذات صلة:
كل شيء عن لغة التجميع: ما هي وكيف تعمل