Initially let Rs and Rd have any values.
After ins 1:
Rs holds 1
For ins 2:
⇒Rd ←1000(Rs)
⇒Rd ←[Rs+1000] (It says whatever is in Rs is added with 1000 and result is used as the memory address which has to be fetched and put it in Rd)
⇒Rd ←[1+1000] (Rs was having 1 in it after 1st instruction)
⇒Rd ←[1001]
⇒Rd ←1 (Given that address 1001 actually holds value 1)
So, finally after ins 2,
Rs holds 1
Rd holds 1
For Ins 3:
⇒Rd←Rd+1000 (direct addition of 1000 to whatever is being held in Rd)
⇒Rd←1+1000 (Rd had 1 in it after ins 2)
⇒Rd←1001
So, finally after ins 3,
Rs holds 1
Rd holds 1001
For Ins 4:
⇒0(Rd) ←20
⇒[0+Rd]←20 (It says, add 0 to whatever is stored in Rd, assume the result as another new address where 20 needs to be stored)
⇒[0+1001]←20 (Rd had 1001 after last instruction)
⇒[1001]←20 (Put value 20 into the address 1001)
Finally, address 1001 contains value 20.
Values initially held in memory locations 1001 and 1020 are given just to confuse the reader, only one of the whole given date is used to solve the question.
So, the answer is D.