Memory management 堆栈指针的值是多少?

Memory management 堆栈指针的值是多少?,memory-management,stack,program-counter,Memory Management,Stack,Program Counter,考虑一个具有字节可寻址内存的处理器。假设所有寄存器,包括程序计数器(PC)和程序状态字(PSW),大小均为2字节。主内存中的堆栈是从内存位置(0100)hex实现的,并且它向上增长。堆栈指针(SP)指向堆栈的顶部元素。SP的当前值为(016E)十六进制。调用指令由两个字组成,第一个字是操作码,第二个字是子程序的起始地址 (一个字=2个字节)。CALL指令的实现如下所示: 将PC的当前值存储在堆栈中 将PSW寄存器的值存储在堆栈中 在PC中加载子程序的起始地址 在获取调用指令之前,PC的内容是(5

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

  • 将PC的当前值存储在堆栈中
  • 将PSW寄存器的值存储在堆栈中
  • 在PC中加载子程序的起始地址
  • 在获取调用指令之前,PC的内容是(5FA0)十六进制。执行CALL指令后,堆栈指针的值为

    A.016A

    B.016C

    C.0170

    D.0172

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

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


    提前感谢。

    CALL
    在堆栈中存储两个单词,因此它将SP更改4。堆栈在此体系结构上成长,因此随着存储更多数据,其价值也随之增加。因此,最后您可以计算结果:


    0x16e+4=0x172

    带我们了解一下您是如何到达
    D的
    ,这样我们可以帮助您了解哪里出了错(或者如果您是正确的),我做了与@StenSoft在回答中提到的相同的事情。