ابنِ برامج صغيرة · الدرس 28 من 30 · نحو 18 دقيقة
لعبة هدف صغيرة
ابنِ لعبة من ثلاث جولات بحالة مخزّنة ونتيجة.
01 / اشرح
افهم الفكرة
اللعبة برنامج ذو قواعد ومدخلات وحالة وتغذية راجعة. تحفظ الذاكرة 200 العدد الهدف. في كل من ثلاث جولات يقدّم اللاعب تخمينًا ويكسب نقطةً عند التساوي. تتغيّر النتيجة عند الإصابة فقط.
افصل قواعد اللعبة عن الهدف والتخمينات الحالية. تغيّر الاختبارات كليهما. تطبع اللعبة الصغيرة نتيجةً عددية نهائية؛ ولا تستخدم عشوائيةً أو شبكةً أو حسابًا أو بيانات طلاب سرية. يمكن للعبة أن تكون ممتعة دون ادّعاء أن الآلة تطبع نصًا أو رسومات.
02 / جرّب
راقب ما يحدث
أضف التخمينات 5، 2، 5 إلى الطابور. النتيجة النهائية 2 في المخرجات والذاكرة 201.
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استخدم خطوة لاتّباع تعليمة واحدة في كل مرة. يمكنك تغيير المثال وإعادة تشغيله.
03 / التحدّي
اجعله يعمل
تحتوي الذاكرة 200 على بايت هدف. اقرأ ثلاثة تخمينات بالضبط. عدّ التخمينات المساوية للهدف، وخزّن النتيجة في الذاكرة 201، واطبعها مرةً واحدة.
يشغّل الفاحص البرنامج الحالي في محرّرك على آلة جديدة لكل حالة من حالات الاختبار الـ4. ويوفّر المدخلات والذاكرة المهيّأة بنفسه؛ لا تحدّد مخرجات المختبر الحالية ولا ذاكرته نتيجتك.
LOAD [200] R1
LOAD 0 R2
LOOP 3
INPUT
CMP R1
#
RETURN
LOAD R2
STORE 201
PRINT
HALTهل تحتاج إلى تلميح؟
يجب أن يتجاوز مسار الخطأ زيادة النتيجة، لكنه يصل إلى RETURN الخاصة بالحلقة.
اعرض حلًا محلولًا
اقرأ البرنامج، وتوقّع أثر كل تعليمة، ثم نفّذه خطوةً خطوة في المختبر.
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مختبر معالج الرموز التعبيرية
برنامج الرموز التعبيرية
اكتب LOAD أو ADD أو تعليمة أخرى ثم مسافة لإدراج الرمز. يشغّل Ctrl/⌘ + Enter أو يوقف مؤقتًا؛ ويوقف Escape مؤقتًا؛ ويزيد Ctrl/⌘ + ] الإزاحة. ينقل Tab التركيز. تستخدم الوسوم نقطتين رأسيتين. تستخدم القفزات عناوين تعليمات تبدأ من صفر.
خريطة التعليمات ونقاط التوقّف (0)
توقف نقاط التوقّف قبل التعليمة. يتجاوز تشغيل نقطة التوقّف الحالية مرةً واحدة عند الاستئناف؛ وتنفّذ خطوة التعليمة مباشرةً. يمسح تحرير المصدر نقاط التوقّف القديمة وحالة الآلة.
سجلات المعالج
- R0
- 0
- R1
- 0
- R2
- 0
- R3
- 0
- R4
- 0
- R5
- 0
- R6
- 0
- R7
- 0
المكدّسات وأطر الحلقات
SP = 255 − عمق البيانات − عمق الاستدعاءات. المكدّس منفصل عن الذاكرة.
مكدّس البيانات (من الأسفل إلى الأعلى)
فارغ
عناوين عودة الاستدعاءات (من الأسفل إلى الأعلى)
فارغ
أطر الحلقات
فارغ
المخرجات والمدخلات
نفّذ تعليمة PRINT لرؤية المخرجات.
المدخلات في الطابور: فارغ
الذاكرة · 256 بايت · 0 غير صفري
تعرض كل خلية العنوان:القيمة. R = قراءة في هذه الخطوة؛ W = كتابة في هذه الخطوة. اختر خليةً لفحصها أو تهيئتها قبل التنفيذ. استخدم الأسهم للتنقّل، وHome/End للصف، وCtrl/⌘ + Home/End للذاكرة كلها.
سجلّ التنفيذ · 0 عناصر
العناصر الأخيرة أدناه. افحص أي فهرس يبدأ من صفر لرؤية الحالة الكاملة المنفصلة قبل التنفيذ وبعده.
افحص تحدّيك
يمكنك إجراء هذا الفحص في أي وقت. يجب أن تنجح كل حالة لتسجيل الإنجاز.
يستخدم التقدّم localStorage فقط. يبقى في هذا المتصفّح ولا يُرسل إلى أي خادم.