28. لعبة هدف صغيرة
ابنِ لعبة من ثلاث جولات بحالة مخزّنة ونتيجة.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
STORE 5 200
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
JUMP_IF_ZERO hit
JUMP next
hit: LOAD R2
ADD 1
COPY R0 R2
next: NOP
RETURN
LOAD R2
STORE 201
PRINT
HALT
أضف المدخلات إلى الطابور: 5, 2, 5
هيّئ الذاكرة: 200: 5
2. ابنِ وافحص
تحتوي الذاكرة 200 على بايت هدف. اقرأ ثلاثة تخمينات بالضبط. عدّ التخمينات المساوية للهدف، وخزّن النتيجة في الذاكرة 201، واطبعها مرةً واحدة.
أنواع التعليمات المطلوبة: INPUT, CMP, LOOP, STORE, JUMP_IF_ZERO
برنامج البداية
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
#
RETURN
LOAD R2
STORE 201
PRINT
HALT
برنامجك وملاحظاتك
3. اشرح الآلة
ما الحالة التي تتغيّر عند تخمين صحيح وعند تخمين خاطئ؟
29. أداة مخزن بيانات تعتمد على المكدّس
اجمع الإدخال والحلقات والمكدّس والتخزين المفهرس.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 3 R3
LOAD 10
PUSH
LOAD 20
PUSH
LOAD 30
PUSH
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
2. ابنِ وافحص
اقرأ N (0–5)، ثم N قيم بايت بالضبط. اعكسها باستخدام مكدّس البيانات. اطبع التسلسل المعكوس وخزّنه ابتداءً من عنوان الذاكرة 0.
أنواع التعليمات المطلوبة: INPUT, LOOP, PUSH, POP, STORE
برنامج البداية
INPUT
COPY R0 R3
LOOP R3
#
RETURN
LOAD 0 R1
LOOP R3
#
RETURN
HALT
برنامجك وملاحظاتك
3. اشرح الآلة
لماذا نستخدم مرحلتين، وماذا ينبغي أن يفعل N=0؟
30. نظام تشغيل مصغّر من صنعك
وزّع أعمال الطابور على خدمات قابلة لإعادة الاستخدام وسجّل النتائج.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 4
CALL double
STORE 64
PRINT
LOAD 3
CALL square
STORE 65
PRINT
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
2. ابنِ وافحص
اقرأ N (0–3)، ثم N أزواج من (العملية، القيمة). تضاعف العملية 0، وتربّع 1، وتضيف 2 واحدًا. وزّع العمل عبر برامج فرعية باستخدام CALL. اطبع كل نتيجة كاملة وخزّن بايتها في العناوين 64، 65، … بترتيب الأعمال.
أنواع التعليمات المطلوبة: INPUT, LOOP, CALL, CMP, STORE, RETURN
برنامج البداية
INPUT
COPY R0 R3
LOAD 64 R2
LOOP R3
INPUT
COPY R0 R4
INPUT
COPY R0 R1
#
RETURN
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
increment: ADD 1
RETURN
برنامجك وملاحظاتك
3. اشرح الآلة
لماذا يمكن أن يتزامن المخرج 260 مع قيمة سجل ذاكرة 4؟