我在名为switch_stack
的函数中遇到问题,该函数通过更改sp
和ss
的值来更新堆栈段和堆栈偏移量。假设我将sp
更改为5555h
而将ss
更改为2000h
,我希望sp
指向地址' 5555&#39}。当我将5555h
移至sp
时,它会这样做,但当我将ss
的值更改为2000h
时,sp
开始指向其他位置并且数据位于虽然[sp]
的值保持不变,但sp
会发生变化。我该如何解决这个问题?
答案 0 :(得分:1)
没有修复。这就是基于段的寻址的工作原理。 ss
和sp
一起构成堆栈顶部的地址,如果更改了堆栈顶部的任何一个,堆栈顶部的位置会发生变化。