19. स्टैक: अंत में रखा, पहले निकला
डेटा स्टैक में मान बचाएँ और उलटे क्रम में लौटाएँ।
यह पाठ खोलें →
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
LOAD 11
PUSH
LOAD 22
PUSH
POP
PRINT
POP
PRINT
HALT
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: शुरू में सभी बाइट शून्य
2. बनाएँ और जाँचें
दो पूर्णांक पढ़ें, दोनों डेटा स्टैक पर बचाएँ और फिर उलटे क्रम में छापें। निश्चित मानों के बजाय PUSH और POP उपयोग करें।
ज़रूरी निर्देश प्रकार: INPUT, PUSH, POP
शुरुआती प्रोग्राम
INPUT
PUSH
INPUT
PUSH
#
HALT
आपका प्रोग्राम और नोट्स
3. मशीन समझाएँ
दूसरा दिया मान पहले क्यों छपता है?
20. सबरूटीन को बुलाना
कोड फिर उपयोग करें और CALL के बाद वाले निर्देश पर लौटें।
यह पाठ खोलें →
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
LOAD 3
CALL square
PRINT
LOAD 4
CALL square
PRINT
HALT
square: MUL R0
RETURN
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: शुरू में सभी बाइट शून्य
2. बनाएँ और जाँचें
दो पूर्णांक पढ़ें। प्रत्येक के लिए वही वर्ग निकालने वाली सबरूटीन बुलाएँ और इनपुट के क्रम में दोनों वर्ग छापें।
ज़रूरी निर्देश प्रकार: INPUT, CALL, MUL, RETURN
शुरुआती प्रोग्राम
INPUT
CALL square
PRINT
INPUT
CALL square
PRINT
HALT
square:
#
RETURN
आपका प्रोग्राम और नोट्स
3. मशीन समझाएँ
एक ही कोड की दो कॉल अलग जगह क्यों लौटती हैं?
21. बुलाने वाले की स्थिति बचाना
फ़ंक्शन को अस्थायी जगह चाहिए तो बचाने और बहाल करने की सहमति अपनाएँ।
यह पाठ खोलें →
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
LOAD 1 R1
LOOP 3
LOAD R1
CALL double
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALT
double: MUL 2
RETURN
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: शुरू में सभी बाइट शून्य
2. बनाएँ और जाँचें
पहला बचाया मान R1 में और फिर फ़ंक्शन का मान पढ़ें। ऐसा सहायक बुलाएँ जो R1 का अस्थायी उपयोग करते हुए मान + 1 लौटाए। पहले परिणाम, फिर सुरक्षित पहला मान छापें। R1 बचाने के लिए PUSH और POP उपयोग करें।
ज़रूरी निर्देश प्रकार: INPUT, PUSH, POP, CALL, RETURN
शुरुआती प्रोग्राम
INPUT
COPY R0 R1
INPUT
CALL helper
PRINT
LOAD R1
PRINT
HALT
helper:
#
RETURN
आपका प्रोग्राम और नोट्स
3. मशीन समझाएँ
कौन-सी बची स्थिति बुलाने वाले की है, फ़ंक्शन परिणाम की नहीं?