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

Hus*_*din 3 boot assembly cpu-registers x86-16 stack-pointer

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

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

Nat*_*dge 6

对于原始 8086,请参阅8086 系列用户手册。表 2-4 定义了“复位后的 CPU 状态”;它表明 SS 设置为 0000H。包括 SP 和 BP 在内的通用寄存器的状态没有记录,因此程序员应该将它们视为未定义并手动初始化它们。

对于最新的 CPU,请参阅 Intel软件开发人员手册,第 3A 卷。表 9-1 定义了复位后的处理器状态。SS设置为0000H,基地址为00000000H,限制为FFFFH,访问权限为Present、R/W、Accessed。EBP 和 ESP 设置为 00000000H。

如果您不编写任何修改堆栈指针的指令,则它不会更改。