4. الحساب بالرموز التعبيرية
اجمع الطرح والجمع والضرب في خطوات مرتّبة.
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 10 ADD 5 PRINT MUL 2 SUB 4 PRINT HALT
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
إجابات توقّع التجربة
المخرجات: 15, 26
| التعليمة | PC قبل | PC بعد | R0 قبل | R0 بعد | الحالة ذات الصلة | المخرجات |
|---|---|---|---|---|---|---|
| LOAD | 0 | 1 | 0 | 10 | {"registers":[10,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | لا يوجد |
| ADD | 1 | 2 | 10 | 15 | {"registers":[15,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | لا يوجد |
| 2 | 3 | 15 | 15 | {"registers":[15,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | 15 |
2. ابنِ وافحص
اقرأ عددًا صحيحًا x واطبع (x + 5) × 2 − 4. يجب أن يعمل البرنامج لجميع المدخلات المقدّمة، بما فيها الأعداد السالبة.
أنواع التعليمات المطلوبة: INPUT, ADD, MUL, SUB
مثال لحل التحدّي
INPUT ADD 5 MUL 2 SUB 4 PRINT HALT
حالات الفاحص الفعلية
الحالة 1
- المدخلات
0- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
6
الحالة 2
- المدخلات
-3- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
0
الحالة 3
- المدخلات
12- الذاكرة الابتدائية
جميع البايتات صفر في البداية- المخرجات المتوقعة
30
3. اشرح الآلة
لماذا يجب أن تأتي MUL بعد ADD لحساب (x+5)×2−4؟
ملاحظة الاستدلال والتعليم
تغيّر كل عملية النتيجة المتراكمة؛ وعكس ADD وMUL يغيّر التعبير لمعظم قيم x.