堆或堆栈的内存分配?

时间:2012-02-15 13:29:16

标签: stack memory-management heap x86-16 8085

我读到了,  在8085中,处理器的起始地址为00000H。  在哪里,  在8086中,处理器的起始地址为FFFF0H

现在我还了解到内存的顶部是heap,而下面是stack。我现在感到困惑的是是否在8085中,内存是从堆栈中分配的,而在8086中是从堆中分配的?

请帮我解决这个概念。感谢

2 个答案:

答案 0 :(得分:2)

堆分配是一种比汇编语言更高级(C,java等)的概念,你在808x汇编中没有这样的东西。你没有“分配”记忆。

另一方面,堆栈是808x的原生概念,以及无数的微处理器(和虚拟机),每次使用“CALL”时都会使用它(将PC推入堆栈) 。 RET时,返回的PC地址从堆栈中弹出。您也可以将寄存器/数据推送到堆栈中。

答案 1 :(得分:0)

有关为什么8085的起始地址为0000H(由于处理器仅支持16位地址而为四个零而不是五个)的讨论,请参阅this thread

关于堆栈的位置:通过修改SP,您可以将堆栈移动到您想要的任何位置,但由于它向下增长,因此将其移动到地址空间的最末端是有意义的。 / p>