堆栈指针的值是多少?

时间:2015-02-10 19:51:37

标签: memory-management stack program-counter

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

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

    在获取CALL指令之前,PC的内容是(5FA0)十六进制。执行CALL指令后,堆栈指针的值为

    一个。 016A

    B中。 016C

    ℃。 0170

    d。 0172

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

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

    先谢谢。

1 个答案:

答案 0 :(得分:2)

CALL在堆栈中存储两个单词,因此它将SP更改为4.堆栈在此体系结构上成长,因此随着存储的数据越多,其值越大。所以最后你可以计算结果:

0x16e + 4 = 0x172