当我更改sp和ss的值时,sp寄存器指向意外的地址

时间:2018-03-26 05:36:09

标签: assembly x86 nasm offset

我在名为switch_stack的函数中遇到问题,该函数通过更改spss的值来更新堆栈段和堆栈偏移量。假设我将sp更改为5555h而将ss更改为2000h,我希望sp指向地址' 5555&#39}。当我将5555h移至sp时,它会这样做,但当我将ss的值更改为2000h时,sp开始指向其他位置并且数据位于虽然[sp]的值保持不变,但sp会发生变化。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

没有修复。这就是基于段的寻址的工作原理。 sssp一起构成堆栈顶部的地址,如果更改了堆栈顶部的任何一个,堆栈顶部的位置会发生变化。