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