19. عمليات المكدّس: الأخير دخولًا هو الأول خروجًا
احفظ القيم في مكدّس البيانات واسترجعها بترتيب معكوس.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 11
PUSH
LOAD 22
PUSH
POP
PRINT
POP
PRINT
HALT
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
2. ابنِ وافحص
اقرأ عددين صحيحين، واحفظ كليهما في مكدّس البيانات، ثم اطبعهما بترتيب معكوس. استخدم PUSH وPOP بدل قيم ثابتة.
أنواع التعليمات المطلوبة: INPUT, PUSH, POP
برنامج البداية
INPUT
PUSH
INPUT
PUSH
#
HALT
برنامجك وملاحظاتك
3. اشرح الآلة
لماذا تُطبع القيمة المقدّمة الثانية أولًا؟
20. استدعاء برنامج فرعي
أعد استخدام الشيفرة وعُد إلى التعليمة التالية لـCALL.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 3
CALL square
PRINT
LOAD 4
CALL square
PRINT
HALT
square: MUL R0
RETURN
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
2. ابنِ وافحص
اقرأ عددين صحيحين. استدعِ برنامج التربيع الفرعي نفسه لكل منهما واطبع المربّعين بترتيب الإدخال.
أنواع التعليمات المطلوبة: INPUT, CALL, MUL, RETURN
برنامج البداية
INPUT
CALL square
PRINT
INPUT
CALL square
PRINT
HALT
square:
#
RETURN
برنامجك وملاحظاتك
3. اشرح الآلة
لماذا يعود استدعاءان للشيفرة نفسها إلى موضعين مختلفين؟
21. الحفاظ على حالة المستدعي
استخدم اتفاق حفظ واستعادة عندما تحتاج الدالة مساحةً مؤقّتة.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 1 R1
LOOP 3
LOAD R1
CALL double
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
double: MUL 2
RETURN
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
2. ابنِ وافحص
اقرأ قيمة محفوظة إلى R1، ثم وسيطًا لدالة. استدعِ دالة مساعدة تعيد الوسيط + 1 وتستخدم R1 مؤقّتًا للعمل. اطبع النتيجة ثم القيمة الأولى المحفوظة. استخدم PUSH وPOP للحفاظ على R1.
أنواع التعليمات المطلوبة: INPUT, PUSH, POP, CALL, RETURN
برنامج البداية
INPUT
COPY R0 R1
INPUT
CALL helper
PRINT
LOAD R1
PRINT
HALT
helper:
#
RETURN
برنامجك وملاحظاتك
3. اشرح الآلة
أي حالة محفوظة تخصّ المستدعي بدل نتيجة الدالة؟