我读到,在8085
处理器的起始地址是00000H
。其中,8086
处理器的起始地址为FFFF0H
。
现在我还了解到,内存的顶部是heap
,而下面是stack
. 我现在感到困惑的是,是否在 8085 中,内存是从堆栈分配的,而在 8086 中是从堆分配的?
请帮我弄清楚这个概念。谢谢
我读到,在8085
处理器的起始地址是00000H
。其中,8086
处理器的起始地址为FFFF0H
。
现在我还了解到,内存的顶部是heap
,而下面是stack
. 我现在感到困惑的是,是否在 8085 中,内存是从堆栈分配的,而在 8086 中是从堆分配的?
请帮我弄清楚这个概念。谢谢
堆分配是比汇编语言更高级别的(C、java 等)概念,在 808x 汇编中没有这样的东西。您不会“分配”内存。
另一方面,堆栈是 808x 的原生概念,以及无数的微处理器(和虚拟机),例如每次使用“CALL”时都会用到它(PC 被压入堆栈)。当您 RET 时,返回的 PC 地址将从堆栈中弹出。您也可以将寄存器/数据推送到堆栈上。
有关为什么 8085 的起始地址是0000H
(即四个零,而不是五个,因为处理器仅支持 16 位地址)的讨论,请参阅此线程。
至于堆栈的位置:通过修改SP
,您可以将堆栈移动到您想要的任何位置,但是由于它向下增长,因此将其移动到地址空间的最末端是有意义的。