8086 (x86-16) CPU 的堆栈指针的初始值是多少?

What Is The Initial Value of Stack Pointer of 8086 (x86-16) CPU?

  1. SS、SP、BP的初始值是多少?它们是否为空 (0x0) 或例如 SP 是否立即设置为 0xFFFE?

  2. 当我们在不使用 pop 和 push 语句的情况下编写汇编代码时,堆栈指针是否设置为一个值?

原始8086见The 8086 Family Users Manual。 Table 2-4 定义“CPU 复位后的状态”;它表明SS设置为0000H。包括SP和BP在内的通用寄存器的状态没有文档记录,所以推测程序员应该认为它们未定义并手动初始化它们。

对于最近的 CPU,请参阅英特尔的 Software Developer's Manual, Volume 3A。 Table 9-1 定义复位后的处理器状态。 SS设置为0000H,基址为00000000H,限值为FFFFH,访问权限为Present,R/W,Accessed。 EBP 和 ESP 设置为 00000000H。

如果你不写任何修改堆栈指针的指令,它不会改变。