1

考虑一个具有字节可寻址存储器的处理器。假设所有寄存器,包括程序计数器 (PC) 和程序状态字 (PSW),大小为 2 字节。主内存中的堆栈是从内存位置 (0100)hex 实现的,并且它向上增长。堆栈指针 (SP) 指向堆栈的顶部元素。SP 的当前值为 (016E​​)hex。CALL 指令有两个字,第一个字是操作码,第二个字是子程序的起始地址(一个字 = 2 字节)。CALL 指令实现如下:

  1. 将 PC 的当前值存储在堆栈中
  2. 将 PSW 寄存器的值存入堆栈
  3. 加载PC中子程序的起始地址

取 CALL 指令之前 PC 的内容是 (5FA0)hex。执行 CALL 指令后,堆栈指针的值为

A. 016A

B. 016C

C. 0170

D. 0172

这个问题是在 GATE 2015 计算机科学中提出的。

我将 D 标记为答案,请帮助我验证我的答案,因为我不确定我是否做对了。

提前致谢。

4

1 回答 1

2

CALL在堆栈中存储两个字,因此它将 SP 更改 4。堆栈在此架构上成长,因此随着存储更多数据,它的价值会增加。所以最后你可以计算结果:

0x16e + 4 = 0x172

于 2015-02-10T19:59:29.293 回答