Memory management 堆栈指针的值是多少?
考虑一个具有字节可寻址内存的处理器。假设所有寄存器,包括程序计数器(PC)和程序状态字(PSW),大小均为2字节。主内存中的堆栈是从内存位置(0100)hex实现的,并且它向上增长。堆栈指针(SP)指向堆栈的顶部元素。SP的当前值为(016E)十六进制。调用指令由两个字组成,第一个字是操作码,第二个字是子程序的起始地址 (一个字=2个字节)。CALL指令的实现如下所示: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
提前感谢。
CALL
在堆栈中存储两个单词,因此它将SP更改4。堆栈在此体系结构上成长,因此随着存储更多数据,其价值也随之增加。因此,最后您可以计算结果:
0x16e+4=0x172带我们了解一下您是如何到达
D的
,这样我们可以帮助您了解哪里出了错(或者如果您是正确的),我做了与@StenSoft在回答中提到的相同的事情。