الانتقال إلى المحتوى الرئيسي

المكدس واستخدامه في المجمع: المبادئ والتعليمات الأساسية

المكدس هو بنية بيانات تلعب دورا مهما في البرمجة. في المجمع ، يتم استخدام المكدس على نطاق واسع لإدارة البيانات والحالة الداخلية للبرنامج. إنها منطقة ذاكرة تعمل على مبدأ" آخر خروج أولا " (ليفو).

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

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

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

  1. ما هو كومة في المجمع?
  2. المبادئ الأساسية للعمل مع المكدس في المجمع
  3. كيفية استخدام مكدس لتخزين البيانات
  4. العمل مع كومة في المجمع: أوامر الدفع والبوب
  5. استخدام المكدس لحفظ السجلات
  6. كيف يمكنني التحقق مما إذا كان المكدس فارغا في المجمع?
  7. تعليمات الاتصال والمتقاعد: استخدام المكدس للاتصال والعودة من الوظائف
  8. سؤال وجواب
  9. لماذا أحتاج إلى كومة في المجمع?
  10. ما هي تعليمات لغة التجميع المستخدمة للعمل مع المكدس?
  11. كيف يعمل إنشاء المكدس في المجمع?
  12. ما هي مبادئ استخدام المكدس في المجمع?

ما هو كومة في المجمع?

المكدس هو منطقة خاصة من الذاكرة المستخدمة في المجمع لتخزين البيانات المؤقتة وعناوين الإرجاع. بل هو بنية البيانات التي تعمل على مبدأ" آخر في أول من " (ليفو — آخر-في-أول من).

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

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

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

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

المبادئ الأساسية للعمل مع المكدس في المجمع

المكدس هو بنية بيانات مهمة تستخدم في المجمع لتخزين القيم المؤقتة والعودة من الإجراءات الفرعية. وهو يعمل على أساس مبدأ" آخر في ، أولا خارج " (آخر في أول من ، ليفو).

يتم استخدام المبادئ الأساسية التالية في المجمع للعمل مع المكدس:

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

بشكل عام ، يعتمد العمل مع المكدس في المجمع على استخدام سجل المكدس والعمليات الخاصة لإضافة وإزالة العناصر من المكدس. يسمح لك الاستخدام الصحيح للمكدس بتنظيم العمل بشكل فعال مع الروتين والبيانات المؤقتة في المجمع.

كيفية استخدام مكدس لتخزين البيانات

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

باستخدام كومة في المجمع يسمح لك لتنظيم كفاءة تخزين واستخدام البيانات في البرنامج. هناك تعليمات خاصة للعمل مع المكدس في المجمع.

دعونا نلقي نظرة على التعليمات الأساسية المستخدمة للعمل مع المكدس:

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

يمكن أيضا استخدام المكدس لتخزين البيانات المؤقتة التي يتم إرجاعها بواسطة الوظائف ، أو حفظ السجلات قبل استدعاء روتين فرعي ، أو التعامل مع استثناء. يتيح لك استخدام المكدس تنظيم عمل البرنامج بشكل أكثر مرونة وسهولة.

العمل مع المكدس في المجمع: أوامر الدفع والبوب

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

يتم استخدام أمرين أساسيين للعمل مع المكدس في المجمع: دفع (الكتابة) والبوب (استخراج) البيانات.

الأمر دفع:

الأمر دفع يسمح لك لكتابة قيمة سجل أو ثابت إلى المكدس. بناء جملة الأوامر:

الفريقالوصف
دفع التسجيليتم كتابة قيمة السجل إلى المكدس
دفع ثابتيتم كتابة الثابت إلى المكدس

نتيجة لتنفيذ الأمر دفع ، يتم تقليل مؤشر المكدس (مؤشر سب — كومة) من حجم القيمة التي يتم كتابتها. وبالتالي ، تحتل القيمة الجديدة الخلية التالية على المكدس.

الأمر البوب:

الأمر البوب يسمح لك لاستخراج القيمة الأخيرة من المكدس إلى سجل أو زيادة مؤشر المكدس. بناء جملة الأوامر:

الفريقالوصف
تسجيل البوبيتم استخراج القيمة من المكدس وكتابتها في السجل
تسجيل البوبيتم استخراج القيمة من المكدس دون حفظ

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

الغرض الرئيسي من أوامر الدفع والبوب في المجمع هو حفظ السجلات واستعادتها عند الاتصال والعودة من الإجراءات الفرعية.

مثال على استخدام أوامر الدفع والبوب:

  1. فأس موف ، 1234 ساعة ؛ اكتب القيمة إلى سجل الفأس
  2. دفع الفأس ؛ حفظ قيمة سجل الفأس في المكدس
  3. استخراج القيمة من المكدس إلى سجل بكس

في هذا المثال ، نكتب القيمة 1234 ساعة إلى سجل الفأس ، وتخزينها على المكدس باستخدام الأمر دفع ، ومن ثم استخراج القيمة من المكدس إلى سجل بكس باستخدام الأمر البوب.

استخدام المكدس لحفظ السجلات

المكدس هو منطقة خاصة من الذاكرة تستخدم لتخزين البيانات مؤقتا أثناء تنفيذ البرنامج. في المجمع ، يعد المكدس أحد الأدوات المهمة ويستخدم لحفظ السجلات واستعادتها عند الاتصال والعودة من روتين فرعي.

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

يتم استخدام زوج من التعليمات لحفظ السجلات على المكدس: الدفع والبوب. تضع تعليمات الدفع قيمة السجل في الجزء العلوي من المكدس ، وتقوم تعليمات البوب بتنفيذ العملية العكسية — تسترد القيمة من أعلى المكدس وتكتبها في السجل.

على سبيل المثال ، لحفظ قيمة سجل الفأس على المكدس ، يتم استخدام تعليمات دفع الفأس ، واستعادة القيمة من المكدس مرة أخرى إلى سجل الفأس ، يتم استخدام تعليمات الفأس البوب.

عادة ، يتم حفظ السجلات قبل استدعاء روتين فرعي ، والذي سيتم تغييره داخل الروتين الفرعي ، وبعد العودة من الروتين الفرعي ، تتم استعادة قيم التسجيل باستخدام تعليمات الدفع والبوب.

من أجل راحة العمل مع السجلات والمكدس ، يوصى باستخدام قاعدة "فيلو" (أولا في آخر خروج) — الأول جاء ، آخر يسار. هذا يعني أن القيمة الأولى الموضوعة على المكدس ستكون آخر قيمة يتم استردادها منها.

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

كيف يمكنني التحقق مما إذا كان المكدس فارغا في المجمع?

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

للتحقق مما إذا كان المكدس فارغا ، يمكنك القيام بما يلي:

  1. قم بتحميل القيمة الحالية لسجل ليرة سورية في السجل.
  2. تحقق مما إذا كانت قيمة سجل سب تساوي القيمة الأولية للمكدس.
  3. إذا كانت القيم متطابقة ، فإن المكدس فارغ ، وإلا فإن المكدس يحتوي على عناصر.

يوجد أدناه مثال على رمز لغة التجميع (س 86) الذي يوضح فحص الفراغ المكدس:

تحميل قيمة سجل ليرة سورية

مقارنة قيمة السجل مع قيمة حالة المكدس الأولية

القفز إذا كان المكدس فارغا

القفز إذا المكدس ليست فارغة

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

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

تعليمات الاتصال والمتقاعد: استخدام المكدس للاتصال والعودة من الوظائف

في المجمع ، يمكن تنظيم البرامج كوظائف منفصلة تؤدي مهام محددة. للتحكم في تنفيذ الوظائف ، يتم استخدام تعليمات الاتصال والمتقاعد ، والتي تسمح لك بالاتصال بالوظائف والعودة منها.

يتم استخدام بيان المكالمة لاستدعاء الوظيفة. عندما يتم استدعاء الدالة ، يتم تخزين عنوان التعليمات التالية (عنوان المرسل) على المكدس. بعد ذلك ، يتم نقل التحكم إلى الغرض من المكالمة ، أي إلى رمز الوظيفة. في المجمع ، تحتوي تعليمات الاستدعاء على بناء الجملة التالي:

استدعاء الدالة _ اسم

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

المتقاعد

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

عند استخدام تعليمات الاتصال والمتقاعد ، من الضروري التأكد من حفظ السجلات واستعادتها بشكل صحيح ، وكذلك تنظيم المكدس بشكل صحيح. من المهم أن نتذكر أن المكدس يعمل على مبدأ آخر في أول (ليفو) ، وهذا هو ، العنصر الأخير المكتوب في المكدس سيكون أول من يقرأ.

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

سؤال وجواب

لماذا أحتاج إلى كومة في المجمع?

يتم استخدام المكدس في المجمع لتخزين البيانات المؤقتة وعناوين الإرجاع ، مما يسمح لك بتنظيم عمل البرنامج بشكل فعال وإدارة مكالمات الإجراءات.

ما هي تعليمات لغة التجميع المستخدمة للعمل مع المكدس?

للعمل مع المكدس ، يستخدم المجمع دفع ، والبوب ، والدعوة والتعليمات المتقاعد. تضع تعليمات الدفع القيمة في الجزء العلوي من المكدس ، وتعليمات البوب تستخرج القيمة من أعلى المكدس ، وتعليمات المكالمة تستدعي الإجراء وتخزن عنوان الإرجاع على المكدس ، وتعليمات المتقاعد ترجع من الإجراء.

كيف يعمل إنشاء المكدس في المجمع?

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

ما هي مبادئ استخدام المكدس في المجمع?

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