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.    पुन: स्टैक पॉइंटर का मान एक से बढ़ाते है । 

Wednesday, September 12, 2018

8085 के इंटरप्ट संबंधित निर्देश (Interrupt related Instructions of 8085)


इस वक्तव्य में हम, ८०८५ में उपयोग होने वाले इंटरप्ट से संबन्धित निर्देशों के बारे में जानेंगे। ८०८५ माइक्रोप्रोसेसर में इंटरप्ट से संबन्धित ४ निर्देश निचे प्रदर्शित है जिनका उपयोग कर हम इंटरप्ट को नियंत्रित कर सकते है।

1.      EI
2.      DI
3.      SIM
4.      RIM

यह निर्देश केवल मस्केबल इंटरप्ट को ही नियंत्रित  कर सकती है। TRAP को ये नियंत्रित नहीं कर सकती।

1.      EI:

सभी मस्केबल इंटरप्ट को इनेबल करने के लिए हम इस निर्देश का उपयोग करते है। जब यह निर्देश क्रियान्वित होता है, तो  यह इंटरप्ट इनेबल फ्लिप फ्लॉप को सेट कर देता है। जिससे सभी मस्केबल इंटरप्ट प्रोसेस होने के किये माइक्रोप्रोसेसर पर आ सकती है। यह एक १ बाइट कि इंस्ट्रक्शन होती है।

2.      DI:

सभी मस्केबल इंटरप्ट को डिसेबल  करने के लिए हम इस निर्देश का उपयोग करते है। जब यह निर्देश क्रियान्वित होता है, तो  यह इंटरप्ट इनेबल फ्लिप फ्लॉप को रिसेट कर देता है। जिससे सभी मस्केबल इंटरप्ट प्रोसेस होने के किये माइक्रोप्रोसेसर पर नहीं आ सकती है। यह भी एक १ बाइट इंस्ट्रक्शन है।

3.      SIM:

प्रोग्राम कण्ट्रोल द्वारा मस्केबल इंटरप्ट को इनेबल करने के लिए EI इंस्ट्रक्शन का प्रयोग किया जाता है। यह इंस्ट्रक्शन सभी मस्केबल इंटरप्ट को एक साथ इनेबल करती है। यह कार्य हम SIM इंस्ट्रक्शन के द्वारा ओर अधिक निपुर्णता के साथ कर सकते है।

चित्र 1: SIM इंस्ट्रक्शन .

यह एक 1 बाइट इंस्ट्रक्शन है । यह इंस्ट्रक्शन निम्न कार्यो को कर सकती है:
  •  यह RST 7.5 , RST 6.5 और RST 5.5 को मास्क कर सकती है। यदि D0  बिट का मान 1 होता है तो, RST 5.5 मास्क हो जाती है। और यदि यह बिट 0 होती है तो यह इंटरप्ट अनमास्क रहती है । अर्थात यह माइक्रोप्रोसेसर के लिए उपलब्ध होती है। इसी प्रकार, जब D1  और  D2  बिट के मान 1 होता है, तो RST 6.5 तथा RST 7.5 क्रमश: मास्क होती है। और जब इनका मान 0 होता है तब यह अनमास्क होती है। D3 बिट तीनो इंटरप्ट को एक साथ मास्क करने के लिए उपयोग होती है  जब यह बिट 0 होगी तब यह तीनो इंटरप्ट इनेबल होगी और जब यह बिट 1 होगी तब तीनो इंटरप्ट मास्क हो जाएगी । इस बिट के 0 होने पर यह D0, D1 और D2 के मानो का प्रभाव ख़त्म हो जाता है ।
  • बिट D4 RST 7.5 पर अधिक कण्ट्रोल प्रदान करती है इस बिट के द्वारा RST 7.5 के फ्लिप फ्लॉप को रिसेट किया जा सकता है. जिससे इस इंटरप्ट को मास्क किया जा सकता है ।
  • जब हमें श्रेणी क्रम में डाटा को I/O के साथ कम्यूनिकेट करना होता है, तब हम इस इंस्ट्रक्शन का प्रयोग करते है । इस इंस्ट्रक्शन कि D6 तथा D7 बिट इस कार्य के लिए उत्तरदायी होती है । इन बिट्स के मान से इंटरप्ट प्रभावित नहीं होती है। जब भी सीरियली डाटा भेजना होता है, तो डाटा भजने से पहले D6 बिट को इनेबल करना होता है । यह बिट सिरिअल आउटपुट डाटा लेच को इनेबल करता है और D7 से डाटा को I/O पर संचारित किया जाता है।
D5 बिट सामान्यत: निष्क्रिय होती है इससे इंटरप्ट या सीरियल संचार में कोई प्रभाव नहीं पड़ता । यह इंटरप्ट इंस्ट्रक्शन accumulator के मान के आधार पर कार्य कराती है । अर्थात D0 से D7 तक कि बिट्स accumulator कि बिट्स होती है।

4.      RIM

८०८५ माइक्रोप्रोसेसर में एक से अधिक इंटरप्ट होती है । जब किसी इंटरप्ट को माइक्रोप्रोसेसर प्रोसेस करता है तो उस समय अन्य इंटरप्ट भी सर्वीस के लिए रिक्वेस्ट कर सकती है। ऐसी  स्थिति में माइक्रोप्रोसेसर में यह इंटरप्ट अपूर्ण अवस्था (Pending Condition) में रहती है. इन अपूर्ण इंटरप्ट को ज्ञात करने के लिए माइक्रोप्रोसेसर 8085 में हम RIM इंस्ट्रक्शन का उपयोग करते है।
             
 
चित्र 2 : RIM इंस्ट्रक्शन.
           यह भी एक 1 बाइट इंस्ट्रक्शन है । जो कि निम्न कार्य कराती है:
  • बिट D0 से D2 तक के बिट्स क्रमश: RST  5.5, RST  6.5 और RST  7.5 कि स्थिति (status) को दर्शाती है। यदि इन बिट्स मेसे कोई बिट का मान 1 होता है तो वह इंटरप्ट मास्क होती है.
  • बिट D3 का उपयोग इंटरप्ट को इनेबल करने के लिए किया जाता है । इस बिट का मान 1 होने पर यह इंटरप्ट का इनेबल होना दर्शाता है ।
  • बिट्स D4 से D6 तक के बिट्स क्रमशः RST 5.5, RST  6.5 और RST  7.5 का पेंडिंग होना दर्शाती है ।
  • बिट D7  सीरियल डाटा ग्रहण करने के किये उत्तरदायी होती है.

 Reference:
1. R.S. Gaonkar.

2. SIM Gif, "https://i.stack.imgur.com/AFeq8.jpg".
3. RIM Gif, "https://qph.fs.quoracdn.net/main-qimg-96d2641033eeb309322d9a0e6639bbe8-c".

Thursday, September 6, 2018

8085 माइक्रोप्रोसेसर का पिन डायग्राम

8085 एक 40 पिन कि IC होती है जिसके प्रत्येक पिन का कार्य भिन्न होता है. यह DIP (Dual In Package) पैकेज के रूप में उपलब्ध है. DIP का अर्थ है IC का एसा स्वरुप जिसमे कि आधे पिन IC के एक ओर तथा बचे हुए आधे उन्ही के दूसरी ओर होते है.
   8085 माइक्रोप्रोसेसर का पिन डायग्राम चित्र 1 में प्रदर्शित है. 
 
चित्र 1. 8085 माइक्रोप्रोसेसर का पिन डायग्राम

Pin 1 & 2 (X1 and X2):

इन पिन्स पर क्रिस्टल दोलित्र (crystal oscillator) लगा होता है, जो माइक्रोप्रोसेसर को आवश्यक क्लॉक सिग्नल को उत्पन्न करता है. क्रिस्टल दोलित्र, 6 मेगा हर्ट्ज आवृति उत्पन्न करता है. चूँकि माइक्रोप्रोसेसर 3 मेगाहर्ट्ज फ्रीक्वेंसी पर कार्य करता है, तो क्रिस्टल द्वारा उत्पन्न 6 मेगाहर्ट्ज फ्रीक्वेंसी को एक T फ्लिप फ्लॉप वर आधा कर दिया जाता है. और यह 3 M Hz माइक्रोप्रोसेसर उपयोग करता है. और शेष 3 M Hz अन्य पेरिफेरल डिवाइसेस के उपयोग के लिए होती है.

Pin 3: (Reset out)

इस पिन का उपयोग माइक्रोप्रोसेसर के साथ जुडी सभी पेरिफेरल डिवाइसेस तथा IC को रिसेट करने के लिए किया जाता है. यह एक आउटपुट सिग्नल है जो कि एक्टिव हाई होने पर कार्य करता है. जब RESET IN सिग्नल एक्टिव-लो (active-low) होता है तब इस पिन का मान एक्टिव-हाई (active-high) होता है.

Pin 4 & 5: (SOD & SID)

यह पिन क्रमशः SOD तथा SID होती है, जो डाटा के श्रेणीबद्ध संचार के लिए उत्तरदायी होती है. SOD पिन श्रेणीबद्ध रूप से डाटा को आउटपुट पर संचारित कराती है. तथा SID श्रेणीबद्ध रूप से डाटा प्राप्त करने के लिए उत्तरदायी होती है.  

Pin 6 to 10: (TRAP, RST 7.5, RST 6.5, RST 5.5 and INTR)

यह सभी पिन्स इंटरप्ट पिन्स कहलाती है. ये पिन्स क्रमश: TRAP, RST ७.५, RST ६.५, RST ५.५ और INTR है. इन सभी को हार्डवेयर इंटरप्ट कहा जाता है, क्यों कि इनके लिए माइक्रोप्रोसेसर IC पर पिन्स उपलब्ध होती है. इनमे TRAP कि एक नॉन-मास्केबल (non-makeable) इंटरप्ट है, जिसे रोका नहीं जा सकता. जबकि अन्य सभी मास्केबल इंटरप्ट होती है. अर्थात अन्य इंटरप्ट को रोका जा सकता है. INTR पिन एक जनरल परपस इंटरप्ट होती है जो इंटरप्ट रिक्वेस्ट के लिए उपयोग कि जाती है. इसकी प्रायिकता सबसे कम होती है.

Pin 11: (INTA')

इस पिन का उपयोग इंटरप्ट को एकनॉलेज करने के लिए किया जाता है. यह पिन एक्टिव-लो सिग्नल पर कार्य  करती है. जब इस पिन पर 0 होता है उस समय माइक्रोप्रोसेसर INTR इंटरप्ट रिक्वेस्ट को एकनॉलेज कर रहा होता है. यह सिग्नल माइक्रोप्रोसेसर से बहार दिया जाता है.

Pin 12 to 19: (AD0 to AD7)

यह पिन्स पर डाटा और एड्रेस बस मल्टीप्लेक्स होती है. ये पिन्स क्रमश: AD0, AD1, AD2, AD3, AD4, AD5, AD6 and AD7 और  है. इन पिन्स पर एड्रेस कि लोअर 8 बिट्स डाटा बस के साथ मल्टीप्लेक्स होती है. इस बस से एक समय पर या तो डाटा भेजा जा सकता है या मेमोरी एड्रेस कि अंतिम 8 बिट्स. इन पिन्स का मान एड्रेस हे या डाटा यह ALE पिन के मान पर निर्भर करता है.

Pin 20: (GND)

इस पिन पर ग्राउंड सिग्नल को जोड़ा जाता है.

Pin 21 to 28: (A8-A15)

यह एड्रेस बस कि उच्च 8 बिट्स के लिए होती है. या हम कह सकते है कि यह पिन एड्रेस बस के लिए आरक्षित होती है. यह क्रमश: A8, A9, A10, A11, A12, A13, A14 और A15 होती है, जिन पर एड्रेस कि A8 से A15 तक कि बिट्स भेजी जाती है.

Pin 29 & 33: (S0 and S1)

ये दोनों पिन्स स्टेटस सिग्नल्स को प्रदर्शित करते है. ये दोनों ही पिन्स से माइक्रोप्रोसेसर सिग्नल्स बहार भेजता है. यह सिग्नल माइक्रोप्रोसेसर द्वारा वर्तमान में कियान्वित होने वाले कार्य को प्रदर्शित करते है, जो निम्न सारणी में दिया गया है.


S. No.
S0
S1
Operation
1
0
0
Halt
2
0
1
Write
3
1
0
Read
4
1
1
Opcode Fetch

Pin 30: (ALE)

ALE अर्थात Address Latch Enable. इस पिन के द्वारा एड्रेस लैच को इनेबल किया जाता है. इस पिन के द्वारा ही यह ज्ञात किया जाता है कि 12 से 19 तक कि पिन्स डाटा बस कि तरह कार्य कर रही है या एड्रेस बस कि तरह. जब इस पिन का मान 1 होता है, तब 12 से 19 तक कि पिन्स एड्रेस बस कि भांति कार्य करती है. और इस पिन का मान 0 होने पर 12 से 19 तक कि पिन्स डाटा बस कि तरह कार्य कराती है.

Pin 31 & 32: (WR' & RD')

पिन 31 write ऑपरेशन के लिए, जबकि 32 read ऑपरेशन के लिए उपलब्ध है. यह दोनों ही एक्टिव-लो सिग्नल्स होते है. जब पिन 31 पर एक्टिव-लो सिग्नल होता है, तब डाटा बस का डाटा मेमोरी या पेरिफेरल पर write किया जाता है. जब पिन 32 पर एक्टिव-लो सिग्नल होता है, तब मेमोरी या इनपुट पेरिफेरल से डाटा read  किया जाता है.

Pin 34: (IO/M')

Read या write ऑपरेशन मेमोरी में करना है या इनपुट/आउटपुट डिवाइसेस पर, यह इस पिन द्वारा किया जाता है. यदि इस पिन का सिग्नल एक्टिव-लो होता है तो read/write ऑपरेशन मेमोरी पर होगा. और जब यह एक्टिव-हाई होगा तब ये ऑपरेशन इनपुट/आउटपुट पर होगा.

Pin 35: (Ready)

माइक्रोप्रोसेसर बहुत ही तेज गति से कार्य करता है, जबकि अन्य पेरिफेरल युक्तियाँ इसकी तुलना में कम गति से कार्य कराती है. अत: माइक्रोप्रोसेसर और इन पेरिफेरल के मध्य सामंजस्य स्थापित करने के लिए इस पिन का उपयोग किया जाता है. इस पिन पर जब 0 सिग्नल होता है, तब माइक्रोप्रोसेसर wait स्थिति में चला जाता है. और जब परिफेरल डाटा प्राप्त करने के लिए तैयार हो जाती है तब वह इस पिन पर एक्टिव-हाई सिग्नल भेजती है और माइक्रोप्रोसेसर डाटा भेजता है.

Pin 36: (Reset In')

इस पिन का उपयोग माइक्रोप्रोसेसर को रिसेट करने के लिए किया जाता है. यह एक एक्टिव-लो (Active-low) सिग्नल होता है, अर्थात जब इस पिन पर 0 सिग्नल दिया जाता है तब यह पिन माइक्रोप्रोसेसर को रिसेट करती है. यह 0 सिग्नल इस पिन पर कम से कम तिन क्लॉक पल्स तक होना चाहिए, जिससे यह पिन माइक्रोप्रोसेसर को स्वत: ही रिसेट होने के लिए बाद्ध (force) करती है. जब माइक्रोप्रोसेसर रिसेट होता है तो यह प्रोग्राम काउंटर (Program counter) तथा सभी रजिस्टर के मान को क्लियर कर देता है, ट्रैप को छोड़ कर सभी इंटरप्ट को असमर्थ (disable) कर देता है. और सभी बस को उच्च प्रतिबाधा (Hi-impedance) पर रखता है.

Pin 37: (Clock out)

इस पिन से माइक्रोप्रोसेसर अन्य पेरिफेरल को आवश्यक क्लॉक फ्रीक्वेंसी प्रदान करता है.

Pin 38 & 39: (HLDA & HOLD)

यह पिन्स DMA स्थानांतरण (transfer) के लिए प्रयुक्त होती है. जब डायरेक्ट मेमोरी एक्सेस कि आवश्यकता होती हे तो DMA कण्ट्रोल माइक्रोप्रोसेसर को रिक्वेस्ट भेजता है जो उसे पिन 39 (HOLD) पर प्राप्त होती है इस रिक्वेस्ट पर माइक्रोप्रोसेसर अपनी बसो को मुक्त कर देता है और इस रिक्वेस्ट को एकनॉलेज करने के लिए एक एक्टिव-हाई सिग्नल पिन 38 पर देता है जोकि होल्ड एकनॉलेज के लिए होती है.

Pin 40: (+Vcc)

इस पिन से हम पॉवर सप्लाई को कनेक्ट करते है, जो इस IC को कार्य करने के लिए उर्जा प्रदान कराती है. 8085 +5 V पर कार्य करता है.


 Reference:
1. R.S. Gaonkar, "Microprocessor Architecture, Programming, and Applications with the 8085".