← सभी पाठ

दोहराव और काउंटर · 30 में पाठ 13 · लगभग 10 मिनट

लूप: काम दोहराना

LOOP को RETURN से जोड़ें और शून्य दोहराव ठीक सँभालें।

01 / समझाएँ

विचार समझें

LOOP count ऐसा खंड शुरू करता है जो उसके जोड़ीदार RETURN पर समाप्त होता है। चार की गिनती खंड को चार बार चलाती है। शून्य गिनती पूरा खंड छोड़ देती है; ऋणात्मक गिनती स्पष्ट त्रुटि देती है।

यह RETURN लूप का खंड बंद करता है। लूप के बाहर RETURN की सबरूटीन वाली अलग भूमिका है, जिसे आगे सीखेंगे। खंड में इंडेंट करने से पढ़ना आसान होता है, हालाँकि खाली जगह व्यवहार नहीं बदलती।

02 / आज़माएँ

होते हुए देखें

चार बार आठ अपेक्षित है। 4 को 0 करें और देखें कि कोई आउटपुट नहीं आता।

LOAD 8
LOOP 4
  PRINT
RETURN
HALT

एक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।

03 / चुनौती

इसे काम करने दें

0 से 5 तक दोहराव गिनती पढ़ें। उतनी ही बार 8 छापें, फिर रुकें।

जाँचक संपादक के वर्तमान प्रोग्राम को हर 3 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।

INPUT
COPY R0 R1
LOAD 8
LOOP R1
  #
RETURN
HALT
संकेत चाहिए?

INPUT की गिनती को LOOP का मान बनाएँ।

हल किया समाधान दिखाएँ

प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।

INPUT
COPY R0 R1
LOAD 8
LOOP R1
PRINT
RETURN
HALT

इमोजी CPU प्रयोगशाला

तैयार · 0 चक्र

इमोजी प्रोग्राम

LOAD, ADD या दूसरा निर्देश नाम लिखकर Space दबाएँ ताकि इमोजी जुड़े। Ctrl/⌘ + Enter चलाता/रोकता है; Escape रोकता है; Ctrl/⌘ + ] इंडेंट करता है। Tab फोकस बदलता है। लेबल कोलन लेते हैं। जंप शून्य-आधारित निर्देश पते लेते हैं।

निर्देश मानचित्र और ब्रेकपॉइंट (0)

ब्रेकपॉइंट निर्देश से पहले रोकते हैं। चलाएँ रुके ब्रेकपॉइंट के पार एक बार बढ़ता है; एक कदम सीधे निर्देश चलाता है। स्रोत बदलने से पुराने ब्रेकपॉइंट और मशीन स्थिति साफ़ होते हैं।

    CPU रजिस्टर

    R0
    0
    R1
    0
    R2
    0
    R3
    0
    R4
    0
    R5
    0
    R6
    0
    R7
    0
    प्रोग्राम काउंटर (PC)
    0
    स्टैक संकेतक (SP)
    255
    फ्लैग
    शून्य: निष्क्रिय · ऋणात्मक: निष्क्रिय · ओवरफ़्लो: निष्क्रिय
    विलंब अनुरोध
    0 ms
    स्टैक और लूप फ़्रेम

    SP = 255 − डेटा गहराई − कॉल गहराई। स्टैक मेमोरी से अलग है।

    डेटा स्टैक (नीचे → ऊपर)

    खाली

    कॉल वापसी पते (नीचे → ऊपर)

    खाली

    लूप फ़्रेम

    खाली

    आउटपुट और इनपुट

    आउटपुट देखने के लिए PRINT चलाएँ।

    कतार का इनपुट: खाली

    मेमोरी · 256 बाइट · 0 गैर-शून्य

    हर खाना पता:मान दिखाता है। R = इस कदम में पढ़ा; W = इस कदम में लिखा। जाँचने या निष्पादन से पहले मान रखने के लिए खाना चुनें। तीर कुंजियों से चलें, पंक्ति के लिए Home/End और पूरी मेमोरी के लिए Ctrl/⌘ + Home/End लें।

    मेमोरी मान रखने से पहले रीसेट करें। संग्रहित मान 0–255 में लपेटते हैं।
    निष्पादन रिकॉर्ड · 0 प्रविष्टियाँ

    हाल की प्रविष्टियाँ नीचे हैं। अलग पूर्ण पहले/बाद की स्थिति के लिए कोई भी शून्य-आधारित क्रमांक जाँचें।

    अपनी चुनौती जाँचें

    जब चाहें जाँच सकते हैं। पूर्णता दर्ज करने के लिए हर मामला पास हो।

    प्रगति केवल localStorage लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।