【发布时间】:2013-05-11 22:58:26
【问题描述】:
这其实是一道考试题,我有疑问,我需要知道正确答案和解释。
常见问题 1 和 2。
INSTRUCTION INSTRUCTION SIZE (word)
MOV R1 LOC1 2
MOV R2 #01 1
ADD R1 R2 1
MOV LOC2,R1 2
Halt 1
第一季度。考虑内存是字节可寻址的,大小为 32 位,并且程序已从内存位置 1000(十进制)开始加载。 CPU在执行完Halt指令后已经停止,栈中保存的返回地址为
a) 1007
b) 1020
c) 1024
d) 1028
// 我知道在执行任何指令期间,程序计数(PC 寄存器)都会递增。所以当执行暂停指令时,PC 值应该是 1028 但正确的答案是 c),我不确定。请帮助找到正确的答案。
第二季度。如果 CPU 是 32 位,字可寻址,程序从起始地址 1000 加载。如果在 ADD 指令期间发生中断,压入堆栈的返回地址是什么。
a) 1007
b) 1004
c) 1005
d) 1016
【问题讨论】:
-
那么您提供了什么答案?你的理由是什么?
-
对于 Q.1) 可能有两个答案,在暂停指令期间,如果 PC 值增加,则答案将为 d) 1028,如果 PC 值不增加,则答案将为 c) 1024。
-
(公平地说,他们没有很好地指定这台机器。有些机器在中断时让 PC 递增,而另一些在发生中断时备份它。)
-
in q.1) cpu 是字节可寻址的,程序的起始地址为 1000,即本程序 PC 寄存器的初始值。第一条 MOV 指令将在地址 1000 处填充,然后在指令执行期间 PC 值将递增到 1000+8=1008(指令为 2 个字长)。同样,当 PC 的值为 1016 时,将填充第三条 MOV 指令,在执行此指令之间,PC 值将递增到 1016+8=1024 ,在此地址处我们有下一条要填充的指令是停止指令。
标签: memory assembly cpu cpu-registers