आज के इस ब्लॉग पोस्ट में हम 8051 माइक्रोकंट्रोलर के एड्रेसिंग मोड के बारे में जानेंगे। एड्रेसिंग मोड का मतलब है कि हम इंस्ट्रक्शन में ऑपरेंड को कैसे स्पेसिफाई करते हैं।

8051 माइक्रोकंट्रोलर में पांच प्रकार के एड्रेसिंग मोड होते हैं, जो हैं:
1. इमीडिएट एड्रेसिंग मोड: इस मोड में, 8-बिट या 16-बिट का डाटा सीधे ही इंस्ट्रक्शन में दिया जाता है। यह मोड # से पहचाना जाता है।
उदाहरण: MOV A, #55H (A में 55H का डाटा स्टोर करना)
MOV DPTR, #1234H (DPTR में 1234H का 16-बिट का डाटा स्टोर करना)
2. डायरेक्ट एड्रेसिंग मोड: इस मोड में, ऑपरेंड का पता (address) सीधे ही इंस्ट्रक्शन में दिया जाता है। यह पता RAM की किसी location का होता है, जहाँ से हम डाटा पढ़ते या लिखते हैं।
उदाहरण: MOV A, 30H (30H location से A में डाटा कॉपी करना)
MOV 40H, R0 (R0 से 40H location पर डाटा कॉपी करना)
3. रजिस्टर एड्रेसिंग मोड: इस मोड में, ऑपरेंड के रूप में किसी register का प्रयोग किया जाता है। 8051 में R0-R7 register bank होते हैं, जिनमें से हम किसी को भी use कर सकते हैं।
उदाहरण: MOV A, R1 (R1 से A में डाटा कॉपी करना)
MOV R2, A (A से R2 में डाटा कॉपी करना)
4. Indirect Addressing Mode में, हमें डाटा का पता (address) पता होना चाहिए, लेकिन हमें उस पते को सीधे instruction में specify नहीं करना है। इसके बजाय, हम पते को किसी register pair में store करते हैं, और instruction में register pair का नाम specify करते हैं।
8051 माइक्रोकंट्रोलर में, हम R0-R1 register pair (Bank 0) या R2-R3 register pair (Bank 1) का प्रयोग indirect addressing mode में कर सकते हैं।
Indirect Addressing Mode का सिंटैक्स (syntax) कुछ इस प्रकार है:
MOV @Ri, A ; (Accumulator A के content को register pair Ri (R0-R1 or R2-R3) में store किए गए address पर move करना)
MOV A, @Ri ; (Register pair Ri (R0-R1 or R2-R3) में store किए गए address से content को Accumulator A में move करना)
Indirect Addressing Mode का example:
मान लीजिए, हमें 50H address से data read करना है, और R0-R1 register pair (Bank 0) का use indirect addressing mode में करना है।
तो हमने पहले R0-R1 register pair में 50H address store किया:
MOV R0, #50H ; (50H address को R0 register में store)
MOV R1, #00H ; (00H address को R1 register में store)
फिर हमने indirect addressing mode से data read किया:
MOV A, @R0 ; (R0-R1 register pair में store address 0050H से data read करके Accumulator A में move)