search
Log In
27 votes
3.4k views

Consider the following program segment. Here $\text{R1, R2}$ and $\text{R3}$ are the general purpose registers.
$$\begin{array}{|c|l|l||c|} \hline & \text {Instruction} &  \text{Operation }& \text{Instruction Size} 
\\ & & & \text{(no. of words)} \\\hline & \text{MOV R1,(3000)} & \text{R1} \leftarrow \text{M[3000]} & \text{$2$}
\\\hline \text{LOOP:}& \text{MOV R2,(R3)} & \text{R2} \leftarrow \text{M[R3]} & \text{$1$}
\\\hline & \text{ADD R2,R1} & \text{R2} \leftarrow \text{R1 + R2} & \text{$1$}
\\\hline & \text{MOV (R3),R2} & \text{M[R3]} \leftarrow \text{R2} & \text{$1$}
\\\hline& \text{INC R3} & \text{R3} \leftarrow \text{R3 + 1} & \text{$1$}
\\\hline & \text{DEC R1} & \text{R1} \leftarrow \text{R1 – 1} & \text{$1$}
\\\hline& \text{BNZ LOOP} & \text{Branch on not zero} & \text{$2$}
\\\hline & \text{HALT} & \text{Stop} & \text{$1$}
\\\hline\end{array}$$

Assume that the content of memory location $3000$ is $10$ and the content of the register $\text{R3}$ is $2000$. The content of each of the memory locations from $2000$ to $2010$ is $100$. The program is loaded from the memory location $1000$. All the numbers are in decimal.

Assume that the memory is word addressable. After the execution of this program, the content of memory location $2010$ is:

  1. $100$
  2. $101$
  3. $102$
  4. $110$
in CO and Architecture
edited by
3.4k views
0

5 Answers

41 votes
 
Best answer

The loop runs $10$ times.

  1. When $R1=10 , \text{Memory}[2000] = 110,$
  2. When $R1=9 , \text{Memory}[2001] = 109,$
  3. When $R1=8 , \text{Memory}[2002] = 108,$
  4. When $R1=7 , \text{Memory}[2003] = 107,$
  5. When $R1=6 , \text{Memory}[2004] = 106,$
  6. When $R1=5 , \text{Memory}[2005] = 105,$
  7. When $R1=4 , \text{Memory}[2006] = 104,$
  8. When $R1=3 , \text{Memory}[2007] = 103,$
  9. When $R1=2 , \text{Memory}[2008] = 102,$
  10. When $R1=1 , \text{Memory}[2009] = 101,$


When $R1=0$ the loop breaks., $\text{Memory}[2010]= 100$

Correct Answer: $A$


edited by
0
what  is meaning of BNZ ?On which register it should apply ? how did we know it?
1
This checks result of prev but one instruction, so R1 applies here
0
Good question.
27 votes
The loop is executed 10 times and it modifies the contents from memory location 2000-2009. Memory location 2010 is untouched - contains 100 as before.
0
plz explain...how loop executed??
3 votes

Answer : A

R1 = 10

initial 2000-2010

100 100 100 100 100 100 100 100 100 100 100

2000     2001    2002    2003   2004   2005  2006   2007   2008   2009  2010

1. R1 = 10 , R2 = M[R3]= 100 , R2=R1+R2=110 , R3=2000 , M[2000] = R2=110 , R3 = 2000+1 = 2001

2. R1 = 9 , R2 = M[R3]= 100 , R2=R1+R2=109 , R3=2001 , M[2001] = R2=109 , R3 = 2001 + 1 = 2002 

3. R1 = 8 , R2 = M[R3]= 100 , R2=R1+R2=108 , R3=2002 , M[2002] = R2=108 ,  R3 = 2002 + 1 = 2003 

4. R1 = 7 , R2 = M[R3]= 100 , R2=R1+R2=107 , R3=2003 , M[2003] = R2=107 , R3 = 2003 + 1 = 2004  

5. R1 = 6 , R2 = M[R3]= 100 , R2=R1+R2=106 , R3=2004 , M[2004] = R2=106  , R3 = 2004 + 1 = 2005 

6. R1 = 5 , R2 = M[R3]= 100 , R2=R1+R2=105 , R3=2005 , M[2005] = R2=105   , R3 = 2005 + 1 = 2006 

7. R1 = 4 , R2 = M[R3]= 100 , R2=R1+R2=104 , R3=2006 , M[2006] = R2=104   , R3 = 2006 + 1 = 2007 

8. R1 = 3 , R2 = M[R3]= 100 , R2=R1+R2=103 , R3=2007 , M[2007] = R2=103   , R3 = 2008 + 1 = 2009 

9. R1 = 2 , R2 = M[R3]= 100 , R2=R1+R2=102 , R3=2008 , M[2008] = R2=102    , R3 = 2009 + 1 = 2010 

10. R1 = 1, R2 = M[R3]= 100 , R2=R1+R2=101 , R3=2009 , M[2009] = R2=101 , R3 = 2010 + 1 = 2011

10. R1 = 0 HALT

Final

110 109 108 107 106 105 104 103 102 101 100

 2000   2001    2002    2003    2004   2005    2006   2007  2008   2009   2010

 

1 vote
Answer is 100.because loop is terminated when address is 2009
–3 votes

Ist memory reference R1←M[3000] and then in the loop which runs for 10 times, because the content of memory location 3000 is 10 given in question and loop will run 10 times as

R2← M[R3]

M[R3] ←R2

There are two memory reference every iteration

10*2=20

Total=20+1=21

So  (D) is correct option.

http://www.geeksforgeeks.org/gate-gate-cs-2007-question-71/

0
Why loop executed 10 times????
Answer:

Related questions

25 votes
3 answers
1
4.1k views
Consider the following program segment. Here $\text{R1, R2}$ and $\text{R3}$ ... interrupt occurs during the execution of the instruction INC R3 , what return address will be pushed on to the stack? $1005$ $1020$ $1024$ $1040$
asked Apr 23, 2016 in CO and Architecture jothee 4.1k views
39 votes
4 answers
2
8.5k views
Consider the following program segment. Here $\text{R1, R2}$ and $\text{R3}$ ... that the memory is word addressable. The number of memory references for accessing the data in executing the program completely is $10$ $11$ $20$ $21$
asked Sep 22, 2014 in CO and Architecture Kathleen 8.5k views
35 votes
5 answers
3
5.6k views
In a simplified computer the instructions are: $\begin{array}{|l|l|} \hline \text {OP $R _j , R _i$} & \text{Perform $R _j $OP $R _i$ and store the result in register $R _j$ } \\\hline \text{OP $m,R _i$} & \text{Perform $val$ OP $ ... value of the computation should be in memory. What is the minimum number of MOV instructions in the code generated for this basic block? $2$ $3$ $5$ $6$
asked Sep 22, 2014 in CO and Architecture Kathleen 5.6k views
2 votes
1 answer
4
820 views
Consider that the memory is byte addressable with size 16 bits, and the program has been loaded starting from memory location (2000)10. What will be the return address saved in the stack, if an interrupt occurs while the CPU has been halted after executing the HALT instruction? I am getting 2018.
asked Jan 2, 2018 in CO and Architecture Shubhanshu 820 views
...