एंबेडेड सिस्टम - एड्रेसिंग मोड्स
एक addressing modeसंदर्भित करता है कि आप किसी दिए गए स्मृति स्थान को कैसे संबोधित कर रहे हैं। इस निर्देश को निष्पादित करने के लिए पांच अलग-अलग तरीके या पांच पते मोड हैं जो इस प्रकार हैं -
- तत्काल पता मोड
- डायरेक्ट एड्रेसिंग मोड
- डायरेक्ट एड्रेसिंग मोड रजिस्टर करें
- रजिस्टर अप्रत्यक्ष पता मोड
- अनुक्रमित पता मोड
तत्काल पता मोड
एक उदाहरण से शुरू करते हैं।
MOV A, #6AH
सामान्य तौर पर, हम लिख सकते हैं,
MOV A, #data
इसे ही कहते हैं immediate क्योंकि 8-बिट डेटा तुरंत संचायक (गंतव्य ऑपरेंड) में स्थानांतरित किया जाता है।
निम्नलिखित दृष्टांत उपरोक्त निर्देश और इसके निष्पादन का वर्णन करता है। ओपेक 74 एच 0202 पते पर सहेजा गया है। डेटा 6AH को प्रोग्राम मेमोरी में 0203 पते पर सहेजा जाता है। ओपकोड 74 एच को पढ़ने के बाद, अगले प्रोग्राम मेमोरी एड्रेस पर डेटा को संचायक ए (ई 0 एचएच का संचय का पता) पर स्थानांतरित किया जाता है। चूंकि निर्देश 2-बाइट्स का है और एक चक्र में निष्पादित होता है, इसलिए प्रोग्राम काउंटर को 2 से बढ़ा दिया जाएगा और प्रोग्राम मेमोरी के 0204 को इंगित करेगा।
Note- 6AH से पहले '#' चिन्ह दर्शाता है कि ऑपरेंड एक डेटा (8 बिट) है। '#' की अनुपस्थिति में, हेक्साडेसिमल नंबर को एक पते के रूप में लिया जाएगा।
डायरेक्ट एड्रेसिंग मोड
यह एक ऑपरेंड को संबोधित करने का दूसरा तरीका है। यहां, डेटा (स्रोत डेटा) का पता एक ऑपरेंड के रूप में दिया गया है। एक उदाहरण लेते हैं।
MOV A, 04H
रजिस्टर बैंक # 0 (4th रजिस्टर) का पता 04H है। जब MOV निर्देश निष्पादित किया जाता है, तो रजिस्टर 04H में संग्रहीत डेटा को संचायक में ले जाया जाता है। जैसा कि रजिस्टर 04 एच डेटा 1 एफएच रखता है, 1 एफएच को संचायक में ले जाया जाता है।
Note- हमने तत्काल मोड के विपरीत, डायरेक्ट एड्रेसिंग मोड में '#' का उपयोग नहीं किया है। यदि हमने '#' का उपयोग किया होता, तो डेटा मान 04H को 1FH के बजाय संचायक में स्थानांतरित कर दिया जाता।
अब, निम्नलिखित दृष्टांत पर एक नज़र डालें। यह दिखाता है कि निर्देश कैसे निष्पादित होता है।
जैसा कि ऊपर चित्रण में दिखाया गया है, यह एक 2-बाइट अनुदेश है जिसे पूरा करने के लिए 1 चक्र की आवश्यकता होती है। पीसी को 2 से बढ़ा दिया जाएगा और 0204 को इंगित करेगा। निर्देश MOV A, पते के लिए opcode है E5H। जब 0202 पर निर्देश को निष्पादित किया जाता है (E5H), तो संचायक सक्रिय हो जाता है और डेटा प्राप्त करने के लिए तैयार होता है। तब पीसी 0203 के रूप में अगले पते पर जाता है और 04H के स्थान का पता देखता है जहां स्रोत डेटा (संचायक को हस्तांतरित किया जाना है) स्थित है। 04H पर, नियंत्रण डेटा 1F पाता है और इसे संचायक में स्थानांतरित करता है और इसलिए निष्पादन पूरा हो गया है।
डायरेक्ट एड्रेसिंग मोड रजिस्टर करें
इस एड्रेसिंग मोड में, हम सीधे रजिस्टर नाम का उपयोग करते हैं (स्रोत ऑपरेंड के रूप में)। आइए एक उदाहरण की मदद से समझने की कोशिश करते हैं।
MOV A, R4
एक समय में, रजिस्टर R0 से R7 तक मान ले सकते हैं। ऐसे 32 रजिस्टर हैं। रजिस्टर को संबोधित करने के लिए सिर्फ 8 चर के साथ 32 रजिस्टरों का उपयोग करने के लिए, रजिस्टर बैंकों का उपयोग किया जाता है। 4 रजिस्टर बैंक हैं जिनका नाम 0 से 3 है। प्रत्येक बैंक में R0 से R7 नाम के 8 रजिस्टर शामिल हैं।
एक बार में, एक ही रजिस्टर बैंक का चयन किया जा सकता है। एक रजिस्टर बैंक का चयन एक के माध्यम से संभव बनाया गया हैSpecial Function Register (एसएफआर) नाम दिया Processor Status Word(PSW)। PSW एक 8-बिट SFR है जहां प्रत्येक बिट को आवश्यकतानुसार प्रोग्राम किया जा सकता है। बिट्स PSW.0 से PSW.7 तक निर्दिष्ट हैं। PSW.3 और PSW.4 का उपयोग रजिस्टर बैंकों का चयन करने के लिए किया जाता है।
अब, यह समझने के लिए कि यह कैसे काम करता है, इसकी स्पष्ट समझ पाने के लिए निम्नलिखित दृष्टांत पर एक नज़र डालें।
Opcode EC का उपयोग MOV A, R4 के लिए किया जाता है। ओपकोड 0202 पते पर संग्रहीत किया जाता है और जब इसे निष्पादित किया जाता है, तो नियंत्रण सीधे संबंधित रजिस्टर बैंक के आर 4 (जो कि पीएसडब्ल्यू में चुना जाता है) पर जाता है। यदि रजिस्टर बैंक # 0 का चयन किया जाता है, तो रजिस्टर बैंक # 0 के R4 से डेटा को संचायक में ले जाया जाएगा। यहाँ 2F को 04H पर स्टोर किया जाता है। 04H रजिस्टर बैंक के आर 4 के पते का प्रतिनिधित्व करता है # 0।
डेटा (2F) आंदोलन को बोल्ड में हाइलाइट किया गया है। 2F को डेटा मेमोरी लोकेशन 0C H से संचायक में स्थानांतरित किया जा रहा है और इसे बिंदीदार रेखा के रूप में दिखाया गया है। 0CH, रजिस्टर बैंक # 1 के रजिस्टर 4 (R4) का पता स्थान है। उपरोक्त निर्देश 1 बाइट है और पूर्ण निष्पादन के लिए 1 चक्र की आवश्यकता है। इसका क्या मतलब है, आप रजिस्टर डायरेक्ट एड्रेसिंग मोड का उपयोग करके प्रोग्राम मेमोरी को बचा सकते हैं।
रजिस्टर अप्रत्यक्ष पता मोड
इस एड्रेसिंग मोड में, डेटा का पता रजिस्टर के रूप में स्टोर किया जाता है।
MOV A, @R0
यहां R0 के अंदर का मान एक पते के रूप में माना जाता है, जो डेटा को संचायक में स्थानांतरित करने के लिए रखता है। Example: यदि R0 का मान 20H है, और डेटा 2FH का पता 20H पर संग्रहीत है, तो मान 2FH इस निर्देश को निष्पादित करने के बाद संचायक को हस्तांतरित हो जाएगा। निम्नलिखित दृष्टांत देखें।
तो के लिए opcode MOV A, @R0E6H है। यह मानते हुए कि रजिस्टर बैंक # 0 चयनित है, रजिस्टर बैंक # 0 का R0 डेटा 20H रखता है। प्रोग्राम नियंत्रण 20H पर जाता है जहां यह डेटा 2FH का पता लगाता है और यह 2FH को संचायक में स्थानांतरित करता है। यह एक 1-बाइट अनुदेश है और प्रोग्राम काउंटर 1 से बढ़ जाता है और प्रोग्राम मेमोरी के 0203 पर जाता है।
Note- केवल R0 और R1 को एक रजिस्टर अप्रत्यक्ष संबोधन निर्देश बनाने की अनुमति है। दूसरे शब्दों में, प्रोग्रामर @ R0 या @ R1 का उपयोग करके या तो एक निर्देश बना सकता है। सभी रजिस्टर बैंकों को अनुमति है।
अनुक्रमित पता मोड
अनुक्रमित एड्रेसिंग मोड की अवधारणा को समझने के लिए हम दो उदाहरण लेंगे। निम्नलिखित निर्देशों पर एक नज़र डालें -
MOVC A, @A+DPTR
तथा
MOVC A, @A+PC
जहाँ DPTR डेटा पॉइंटर है और PC प्रोग्राम काउंटर (दोनों 16-बिट रजिस्टर हैं)। पहले उदाहरण पर विचार करें।
MOVC A, @A+DPTR
स्रोत ऑपरेंड @ A + DPTR है। इसमें इस स्थान से स्रोत डेटा शामिल है। यहां हम संचायक की वर्तमान सामग्री के साथ DPTR की सामग्री जोड़ रहे हैं। यह जोड़ एक नया पता देगा जो स्रोत डेटा का पता है। इस पते द्वारा इंगित किए गए डेटा को फिर संचायक में स्थानांतरित किया जाता है।
ऑपकोड 93H है। DPTR का मान 01FE है, जहाँ 01 DPH (उच्च 8 बिट्स) में स्थित है और FE DPL (निचले 8 बिट्स) में स्थित है। Accumulator का मान 02H है। फिर एक 16-बिट अतिरिक्त प्रदर्शन किया जाता है और 0200 एच में 02.5 एच + 02 एच परिणाम होता है। 0200 एच स्थान पर डेटा संचायक को स्थानांतरित हो जाएगा। संचायक (02H) के अंदर पिछले मूल्य को 0200H से नए डेटा के साथ बदल दिया जाएगा। संचय में नया डेटा चित्रण में हाइलाइट किया गया है।
यह एक 1-बाइट अनुदेश है जिसमें निष्पादन के लिए 2 चक्रों की आवश्यकता होती है और इस निर्देश के लिए आवश्यक निष्पादन समय पिछले निर्देशों (जो सभी 1 चक्र प्रत्येक थे) की तुलना में अधिक है।
दूसरा उदाहरण MOVC A, @A+PCउपरोक्त उदाहरण के समान कार्य करता है। संचायक के साथ DPTR को जोड़ने के बजाय, यहां लक्ष्य पता प्राप्त करने के लिए प्रोग्राम काउंटर (पीसी) के अंदर डेटा को संचायक के साथ जोड़ा जाता है।