0

Consider the following program segment. Here R1, R2, and R3 are the general-purpose registers.

Instruction                         Operation                          Instruction Size (No. of Words)

MOV R1, (3000)                R1 ← M[3000]                          2
LOOP: MOV R2, (R3)       R2 ← M[R3]                              1
ADD R2, R1                      R2 ← R1 + R2                          1
MOV (R3), R2                   M[R3]← R2                               1
INC R3                              R3 ← R3 + 1                             1
DEC R1                             R1 ← R1 – 1                             1
BNZ LOOP                        Branch on not zero                    2
HALT                                 Stop                                           1

Assume that the content of memory location 3000 is 10 and the content of the register 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.

Q1. Assume that the memory is word addressable. The number of memory references for accessing the data in executing the program completely is:

Options: (A) 10 (B) 11 (C) 20 (D) 21

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

Options: (A) 100 (B) 101 (C) 102 (D) 110

Q3. Assume that the memory is byte addressable and the word size is 32 bits. If an interrupt occurs during the execution of the instruction ‘INC R3’, what return address will be pushed on to the stack?

Options: (A) 1005 (B) 1020 (C) 1024 (D) 1040

Edited question