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
2. ابنِ وافحص
تحتوي الذاكرة 200 على بايت هدف. اقرأ ثلاثة تخمينات بالضبط. عدّ التخمينات المساوية للهدف، وخزّن النتيجة في الذاكرة 201، واطبعها مرةً واحدة.
أنواع التعليمات المطلوبة: INPUT, CMP, LOOP, STORE, JUMP_IF_ZERO
مثال لحل التحدّي
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
حالات الفاحص الفعلية
الحالة 1
- المدخلات
5, 2, 5- الذاكرة الابتدائية
200: 5- المخرجات المتوقعة
2- الذاكرة النهائية المتوقعة
200: 5, 201: 2- قراءات الذاكرة المطلوبة
200
الحالة 2
- المدخلات
1, 2, 3- الذاكرة الابتدائية
200: 9- المخرجات المتوقعة
0- الذاكرة النهائية المتوقعة
200: 9, 201: 0- قراءات الذاكرة المطلوبة
200
الحالة 3
- المدخلات
0, 0, 0- الذاكرة الابتدائية
200: 0- المخرجات المتوقعة
3- الذاكرة النهائية المتوقعة
200: 0, 201: 3- قراءات الذاكرة المطلوبة
200
الحالة 4
- المدخلات
17, 1, 2- الذاكرة الابتدائية
200: 17- المخرجات المتوقعة
1- الذاكرة النهائية المتوقعة
200: 17, 201: 1- قراءات الذاكرة المطلوبة
200
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
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
إجابات توقّع التجربة
المخرجات: 30, 20, 10
2. ابنِ وافحص
اقرأ N (0–5)، ثم N قيم بايت بالضبط. اعكسها باستخدام مكدّس البيانات. اطبع التسلسل المعكوس وخزّنه ابتداءً من عنوان الذاكرة 0.
أنواع التعليمات المطلوبة: INPUT, LOOP, PUSH, POP, STORE
مثال لحل التحدّي
INPUT
COPY R0 R3
LOOP R3
INPUT
PUSH
RETURN
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
حالات الفاحص الفعلية
الحالة 1
- المدخلات
0- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
لا يوجد- الذاكرة النهائية المتوقعة
0: 0
الحالة 2
- المدخلات
1, 7- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
7- الذاكرة النهائية المتوقعة
0: 7
الحالة 3
- المدخلات
4, 1, 2, 3, 4- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
4, 3, 2, 1- الذاكرة النهائية المتوقعة
0: 4, 1: 3, 2: 2, 3: 1
الحالة 4
- المدخلات
3, 0, 255, 8- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
8, 255, 0- الذاكرة النهائية المتوقعة
0: 8, 1: 255, 2: 0
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
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
إجابات توقّع التجربة
المخرجات: 8, 9
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
LOAD R4
CMP 0
JUMP_IF_ZERO doubleJob
CMP 1
JUMP_IF_ZERO squareJob
LOAD R1
CALL increment
JUMP finish
doubleJob: LOAD R1
CALL double
JUMP finish
squareJob: LOAD R1
CALL square
finish: STORE R2
PRINT
LOAD R2
ADD 1
COPY R0 R2
RETURN
HALT
double: MUL 2
RETURN
square: MUL R0
RETURN
increment: ADD 1
RETURN
حالات الفاحص الفعلية
الحالة 1
- المدخلات
3, 0, 4, 1, 3, 2, 9- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
8, 9, 10- الذاكرة النهائية المتوقعة
64: 8, 65: 9, 66: 10
الحالة 2
- المدخلات
2, 1, -2, 0, 0- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
4, 0- الذاكرة النهائية المتوقعة
64: 4, 65: 0
الحالة 3
- المدخلات
0- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
لا يوجد- الذاكرة النهائية المتوقعة
64: 0
الحالة 4
- المدخلات
3, 2, 255, 0, 130, 1, 16- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
256, 260, 256- الذاكرة النهائية المتوقعة
64: 0, 65: 4, 66: 0
3. اشرح الآلة
لماذا يمكن أن يتزامن المخرج 260 مع قيمة سجل ذاكرة 4؟
ملاحظة الاستدلال والتعليم
يحفظ R0 العدد الصحيح الآمن كاملًا؛ وتحتفظ STORE بأدنى بايت. تخفي استدعاءات الخدمات تفاصيل الحساب، لا قاعدة التوزيع.