问题63至64的方向:
对于具有三个用户寄存器R1,R2和R3的假设CPU,请考虑以下程序段。
Instruction Operation Instruction Size(in words)
MOV R1,5000; R1 ¬ Memory[5000] 2
MOV R2, (R1); R2 ¬ Memory[(R1)] 1
ADD R2, R3; R2 ¬ R2 + R3 1
MOV 6000, R2; Memory [6000] ¬ R2 2
HALT Machine halts 1
请考虑使用32位大小的字节可寻址的内存,并且已从内存位置1000(十进制)开始加载程序。如果在执行HALT指令后暂停CPU时发生中断,则堆栈中保存的返回地址(十进制)将为
(A) 1007
(B) 1020
[C) 1024
(D) 1028答案: (D)
说明:指令大小以文字给出。因此,第一条指令将占用2个字,即8个字节(因为32位字节可寻址,字长将为32位),以此类推,第二条指令为4个字节,第3个4个字节为第4个8字节。第5个4个字节。当第一条指令从1000开始且大小为8字节时,第二条指令地址将为1008,同样,第三条指令地址将为1012,第四条指令地址为1016,第五条指令地址1024,而停止指令地址将为1028。如果是HALT指令,则保存在堆栈中的返回地址(十进制)将是halt指令的地址.so的答案是1028。
注–如果发生中断,则PC的值将为HALT之后该指令的返回地址。
这个问题的测验