【问题标题】:Where is the bottom of the stack in an Intel 8086 cpu?Intel 8086 cpu 的栈底在哪里?
【发布时间】:2020-07-07 09:25:40
【问题描述】:

假设例如SS=0000h,栈的大小是256字节。

堆栈指针寄存器 (SP) 最初指向的位置在哪里?
我猜是0100h。

堆栈的底部在哪里?
0100h 还是 00FFh?

【问题讨论】:

  • 堆栈的“顶部”位置通常不为0,因此如果堆栈大小为256字节,则堆栈不是地址范围0...0xFF而是例如0x8000...0x80FF .这不仅适用于 x86 CPU,而且适用于任何其他允许将堆栈放置在内存中的任何位置的 CPU 类型。

标签: assembly x86-16 cpu-registers callstack


【解决方案1】:

在 x86 中,堆栈指针指向最近推送的项,并向下增长。

如果堆栈为空,SP 将因此位于0100h。当push 完成时,SP 将首先减 2,然后数据将存储在新地址 00FEh,占用堆栈的两个最底部(最高地址)字节。

当栈顶也是栈底时栈为空,所以栈底为0100h

【讨论】:

  • 非常感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多