Lesson 4 — Intermediate

Addressing Modes

Instruction bol rahi hai "data le aao" — lekin data exactly kahan se? Us "kahan se" ka tareeka hi addressing mode hai. Is lesson mein hum har mode ko example ke saath samjhenge, effective address calculate karna seekhenge, aur dekhenge kaunsa mode kis kaam (constants, arrays, pointers) ke liye bana hai.

⏱ 15 min• Intermediate• ISA

Addressing mode kya hai

WHAT

Addressing mode ye batata hai instruction operand ka address kaise nikaalti hai — direct memory mein likha hai, register mein hai, ya calculate karna padta hai. Ye decide karti hai flexibility aur speed dono.

WHEN

Har instruction execute hote hi — CPU ko operand chahiye hota hai, aur addressing mode hi uska raasta tay karta hai. Arrays, loops, pointers sab isi par chalte hain.

WHERE

Compiler har jagah modes choose karta hai — constant ke liye immediate, array ke liye indexed, pointer ke liye indirect. Interview mein har exam mein isse ek question aata hai.

Operand ka final address jahan se data uthaana hai use kehte hain Effective Address (EA). Har mode ka apna tareeka hai EA nikaalne ka — koi seedha deta hai, koi calculate karke.

Main addressing modes (examples ke saath)

1. Immediate     : operand instruction ke andar hi likha
   MOV R1, #5        → R1 = 5  (number tohdi, khud diya)

2. Direct        : effective address instruction mein seedha
   MOV R1, [1000]    → R1 = Mem[1000]

3. Indirect      : instruction mein address ka ADDRESS hai
   MOV R1, [[1000]]  → adla = Mem[1000], R1 = Mem[adla]

4. Register      : operand register mein hi hai
   MOV R1, R2        → R1 = R2  (memory nahi chahiye — tez)

5. Register Indirect : register ke andar address hai
   MOV R1, [R2]      → R1 = Mem[R2]  (pointers yahin se)

6. Displacement   : base + offset (register + chhota number)
   MOV R1, 100[R2]   → R1 = Mem[R2 + 100]

7. Implied        : operands pehle se fixed hain
   CLC / CLD        → carry flag = 0 (koi operand likha nahi)
Yaad rakho: Immediate = data instruction mein; Direct = address instruction mein; Indirect = address ke andar address; Register = sab kuch CPU ke andar (sabse fast). Ye line-wise ratna sabse aasaan tarika hai.

Displacement modes detail (arrays, loops, pointers)

a) Relative (PC-relative) : base = Program Counter
   branch target = PC + offset
   → loops aur jumps ke liye (JMP label)

b) Base + Displacement : base register +12-bit offset
   MOV R1, disp(Rb)  → EA = Rb + disp
   → structure members ke liye

c) Indexed : index register badhta rehta hai
   MOV R1, [Rbase + Rindex]
   → ARRAYS ke liye sabse common mode
d) Auto-increment : access ke baad register = register + size
   MOV R1, (R2)+     → R1 = Mem[R2], R2 = R2 + 4
   → array traversal / stack pop
e) Auto-decrement : pehle register chhota, phir access
   MOV R1, -(R2)     → R2 = R2 - 4, R1 = Mem[R2]
   → stack push (reverse traversal)

Index register array ke loop mein har iteration badhta hai — isi liye indexed mode arrays ka default hai. Auto-increment/decrement stack aur pointer walking ke liye banayi gayi hain, ek instruction mein access + update ho jaata hai.

GATE calculation: Effective address = base + index × scale + displacement (x86 jaisa). Example: R2 = 4000, R3 = 5, instruction [R2 + R3*4 + 100] → EA = 4000 + 20 + 100 = 4120. Multiply factor ko dhyan se padhna.

Kaunsa mode kis kaam ke liye

Speed order (approx):
  Register > Immediate > Direct > Register Indirect > Indirect

Trade-off :
  Direct    : ek memory read, address instruction mein
  Indirect  : do memory read (pehle address, phir data) — slow,
              lekin POINTER update karna aasaan
  Immediate : zero memory read — but value instruction mein fixed

Memory read jitna kam, program utna fast — isi logic se
RISC mein register-to-register operations ka emphasise hai
Exam trap: Direct vs Indirect ka farak poochha jaata hai — Direct mein operand ka address hai instruction mein, Indirect mein address ka address (pointer). Indirect ka fayda: data ko bina instruction badle shift kiya ja sakta hai (dynamic).

Exercise

Question: MOV R1, #5 — ye kaunsi addressing mode hai? (immediate / direct / indirect)

Question: Base register + offset se effective address banane wali mode ka naam? (displacement / implied / immediate)

Question: Array access ke liye sabse common addressing mode kaunsi hai? (indexed / immediate / implied)

Common mistakes

Desi example: Dost ko book dene ke tareeke

Addressing modes ko dost ko book dene ke tareeke samjho — har tareeka ek mode hai:

text
Immediate      : "ye lo,5 page ka note" (khud likh ke de di)
Direct         : "B-14 ghar pe padi hai" (seedha address)
Indirect       : "uska dost batayega kahan hai" (pointer)
Register       : "bag mein daal di, khud le lo" (paas mein)
Displacement   : "Sector-22, House 105" (area + ghar number)
Exam mapping (GATE / TCS / UGC)
  • GATE: effective address calculation (base + index + displacement) direct numerical.
  • GATE: "Which mode best for arrays?" — indexed. "For pointers?" — indirect/register indirect.
  • UGC-NET: modes ki list aur examples — definition-based questions.
  • Trap: "Immediate mode uses memory" — galat, operand instruction ke andar hi hai.
Lesson complete?

Addressing modes clear — ab tum instruction ka operand dhoondh sakte ho. Agla lesson — Computer Arithmetic — mein dekhenge adders, multiplication aur IEEE 754 floating point.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course