← सभी पाठ

गणित और इनपुट · 30 में पाठ 6 · लगभग 10 मिनट

दो इनपुट वाला कैलकुलेटर

निश्चित उत्तर की जगह फिर उपयोग किया जा सकने वाला कैलकुलेटर बनाएँ।

01 / समझाएँ

विचार समझें

उपयोगी प्रोग्राम उन इनपुट पर भी काम करता है जो उसे लिखते समय ज्ञात नहीं थे। दो INPUT निर्देश कतार को क्रम में पढ़ते हैं। मान R1 और R2 में रखें ताकि दोनों उपलब्ध रहें।

कई मामले जाँचने से व्यवहार जाँचा जाता है, केवल एक उत्तर नहीं। शून्य और ऋणात्मक मान वे गलतियाँ दिखाते हैं जो एक धनात्मक उदाहरण छिपा सकता है। चुनौती जाँचक हर मामले के लिए नया CPU बनाता है।

02 / आज़माएँ

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

चलाने से पहले 3 और 4 कतार में डालें। योग 7 और गुणनफल 12 दिखना चाहिए।

INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
ADD R2
PRINT
LOAD R1
MUL R2
PRINT
HALT

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

03 / चुनौती

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

पूर्णांक a और b पढ़ें। पहले उनका योग और फिर गुणनफल छापें। निश्चित उत्तरों के बजाय दिए गए मान इस्तेमाल करें।

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

INPUT
COPY R0 R1
INPUT
COPY R0 R2
#
HALT
संकेत चाहिए?

दूसरी गणना से पहले a फिर लोड करें।

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

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

INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
ADD R2
PRINT
LOAD R1
MUL R2
PRINT
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 लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।