Thursday, September 13, 2018

स्टैक तथा सम्बंधित निर्देश (Stack and related Operation)



8085 में स्टैक read/write मेमोरी लोकेशन का समूह होता है , जो कि प्रोग्रामर द्वारा मुख्य प्रोग्राम में परिभाषित किया जाता है । इन मेमोरी लोकेशन का उपयोग प्रोग्राम के क्रियान्वयन (execution) के समय बाइनरी डाटा को अस्थायी रूप से संग्रहीत करने के लिए किया जाता है। 

सामान्यत: स्टैक को मुख्य प्रोग्राम में परिभाषित करना होता है । इसके लिए हम सर्व प्रथम स्टैक पॉइंटर रजिस्टर में, स्टैक कि प्रारम्भीक मेमोरी लोकेशन को संग्रहीत करते है । एक बार इसे परिभाषित करने के पश्चात् इसे डाटा संग्रहीत करने के लिए उपयोग में लाया जा सकता है । एक डाटा स्टोर होने के बाद हम, स्टैक पॉइंटर के मान को एक से कम करते है और अगले मान को इस मेमोरी लोकेशन में संग्रहीत करते है । अत: स्टैक को परिभाषित करने के लिए हम सदैव उच्च मेमोरी लोकेशन का उपयोग करते है जिससे कि स्टैक का क्षेत्र प्रोग्रामर के लिए दिए गए क्षेत्र के साथ विलय (merge) न हो ।

उपरोक्त विवरण से स्पष्ट है कि स्टैक में डाटा सामान्यत: एड्रेस के घटतेक्रम (reverse order) में स्टोर होता है। स्टैक में डाटा को संग्रहीत करने के लिए 8085 माइक्रोप्रोसेसर में PUSH इंस्ट्रक्शन  का प्रयोग किया जाता है। और स्टैक से डाटा निकलने के लिए POP इंस्ट्रक्शन का उपयोग किया जाता है ।

यह इंस्ट्रक्शन में रजिस्टर के युग्म (register pair) पर कार्य करता है । चूँकि रजिस्टर पेअर 16 बिट्स डाटा को स्टोर कर सकता है अत: जब भी हम इस इंस्ट्रक्शन का प्रयोग करते है तब स्टैक पॉइंटर 2 से बढ़ता या घटता है । जब हम PUSH इंस्ट्रक्शन का उपयोग करते है तब स्टैक पॉइंटर में संग्रहीत एड्रेस दो बार घटता है; और जब हम POP इंस्ट्रक्शन का उपयोग करते है तो स्टैक पॉइंटर का मान दो बार बढ़ता है ।

      8085 में स्टैक को माइक्रोप्रोसेसर तथा प्रोग्रामर दोनों ही उपयोग कर सकते है । माइक्रोप्रोसेसर स्टैक को CALL तथा RET इंस्ट्रक्शन में आतंरिक रूप से उपयोग करता है । जबकि प्रोग्रामर स्टैक को उपयोग करने के लिये PUSH और POP इंस्ट्रक्शन का प्रयोग करता है ।

      1. PUSH Rp 
      2.  POP Rp 

      1.  PUSH Rp

  इस इंस्ट्रक्शन का प्रयोग स्टैक में डाटा को रखने हेतु किया जाता है । यह इंस्ट्रक्शन रजिस्टर पेअर के डाटा को स्टैक पर संग्रहीत करते है रजिस्टर पेअर के उच्च रजिस्टर का मान स्टैक पॉइंटर के मोमोरी लोकेशन पर संग्रहीत करते है । और फिर स्टैक पॉइंटर का मान एक से घटाते है और रजिस्टर पेअर के निम्न रजिस्टर का मान स्टैक पॉइंटर कि नई लोकेशन पर संग्रहीत करते है । Rp के स्थान पर माइक्रोप्रोसेसर का कोई भी रजिस्टर पेअर हो सकता है । Rp के स्थान पर हम BC, DE, HL तथा PSW (Program Status Word) में से कोई भी रजिस्टर हो सकता है । PSW, accumulator तथा फ्लैग रजिस्टर को मिलकर बनाया जाता है   जब एक बार PUSH इंस्ट्रक्शन क्रियान्वित होती है तब स्टैक पॉइंटर का मान 2 से घटता है । जब यह इंस्ट्रक्शन क्रियान्वित होती है तो निम्न कार्य संपन्न होते है :
        
                    यदि हम PUSH B इंस्ट्रक्शन क्रियान्वित होगी, तो
1.   सर्वप्रथम, स्टैक पॉइंटर का मान एक से घटाते है ।
2.   रजिस्टर पेअर के उच्च रजिस्टर का मान, स्टैक पॉइंटर के मोमोरी लोकेशन पर संग्रहीत 
      करते है । अर्थात रजिस्टर B का मान स्टैक पॉइंटर पर संग्रहीत लोकेशन पर रखते है ।
3.   पुन: स्टैक पॉइंटर का मान एक से घटाते है ।
4.   रजिस्टर पेअर के निम्न रजिस्टर का मान, स्टैक पॉइंटर के मोमोरी लोकेशन पर संग्रहीत 
      करते है । अर्थात रजिस्टर C के मान को स्टैक पॉइंटर पर संग्रहीत लोकेशन पर रखते है । 

2. POP Rp

इस इंस्ट्रक्शन का प्रयोग स्टैक से डाटा को निकालने हेतु किया जाता है । यह स्टैक पर संग्रहीत डाटा को रजिस्टर पेअर पर रखता है । स्टैक पॉइंटर के मोमोरी लोकेशन पर संग्रहीत डाटा को सर्वप्रथम रजिस्टर पेअर के निम्न रजिस्टर में रखते है । फिर स्टैक पॉइंटर के मान को एक से बढ़ाते है और स्टैक पॉइंटर के डाटा को उच्च रजिस्टर में संग्रहीत करते है । और पुन: स्टैक पॉइंटर के मान को एक से बढ़ाते है । Rp के स्थान पर माइक्रोप्रोसेसर का कोई भी रजिस्टर पेअर हो सकता है । Rp के स्थान पर हम BC, DE, HL तथा PSW में से कोई भी रजिस्टर हो सकता है । जब एक बार POP  इंस्ट्रक्शन क्रियान्वित होती है तब स्टैक पॉइंटर का मान 2 से बढ़ता है । जब यह इंस्ट्रक्शन क्रियान्वित होती है तो निम्न कार्य संपन्न होते है:

             उदाहरणार्थ यदि हम POP B इंस्ट्रक्शन क्रियान्वित होगी तो
1.    सर्वप्रथम, स्टैक पॉइंटर के मोमोरी लोकेशन पर संग्रहीत डाटा को  रजिस्टर पेअर के निम्न 
       रजिस्टर में रखते है । अर्थात स्टैक पॉइंटर कि लोकेशन पर संग्रहीत डाटा निम्न रजिस्टर C 
       में संग्रहीत होगा ।
2.   अब स्टैक पॉइंटर का मान एक से बढ़ाते है ।
      3.      स्टैक पॉइंटर के नविन मोमोरी लोकेशन पर संग्रहीत डाटा को  रजिस्टर पेअर के उच्च 
             रजिस्टर में रखते है । अर्थात स्टैक पॉइंटर कि लोकेशन पर संग्रहीत डाटा उच्च रजिस्टर 
             B में संग्रहीत होगा ।
4.    पुन: स्टैक पॉइंटर का मान एक से बढ़ाते है । 

No comments:

Post a Comment