13. लूप: काम दोहराना
LOOP को RETURN से जोड़ें और शून्य दोहराव ठीक सँभालें।
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
LOAD 8 LOOP 4 PRINT RETURN HALT
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: शुरू में सभी बाइट शून्य
प्रयोग अनुमान कुंजी
आउटपुट: 8, 8, 8, 8
| निर्देश | पहले PC | बाद में PC | पहले R0 | बाद में R0 | संबंधित स्थिति | आउटपुट |
|---|---|---|---|---|---|---|
| LOAD | 0 | 1 | 0 | 8 | {"registers":[8,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]} | कोई नहीं |
| LOOP | 1 | 2 | 8 | 8 | {"registers":[8,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[{"start":1,"end":3,"remaining":4,"callDepth":0}],"memoryReads":[],"memoryWrites":[]} | कोई नहीं |
| 2 | 3 | 8 | 8 | {"registers":[8,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[{"start":1,"end":3,"remaining":4,"callDepth":0}],"memoryReads":[],"memoryWrites":[]} | 8 |
2. बनाएँ और जाँचें
0 से 5 तक दोहराव गिनती पढ़ें। उतनी ही बार 8 छापें, फिर रुकें।
ज़रूरी निर्देश प्रकार: INPUT, LOOP, PRINT, RETURN
चुनौती समाधान उदाहरण
INPUT COPY R0 R1 LOAD 8 LOOP R1 PRINT RETURN HALT
वास्तविक जाँच मामले
मामला 1
- इनपुट
0- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
कोई नहीं
मामला 2
- इनपुट
1- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
8
मामला 3
- इनपुट
4- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
8, 8, 8, 8
3. मशीन समझाएँ
LOOP 0 अपना खंड कितनी बार चलाता है?
तर्क और शिक्षण टिप्पणी
शून्य; जोड़ीदार खंड/RETURN छोड़ता है। ऋणात्मक गिनती त्रुटि देती है।