回 帖 发 新 帖 刷新版面

主题:请教个栈段问题。

20000H ~ 2FFFFH 当做栈段,栈是空的,这时候

 20000H |————|
    .   |————|
    .   |————|
 2FFFaH |————|
 2FFFbH |————|
 2FFFcH |————|
 2FFFdH |————|
 2FFFeH |————|
 2FFFFH |————|
 30000H |————|   <- ss:sp

SS=2000H,SP=? (ss:sp是否是30000?)  

mov  ax ,1000H
push  ax         //运行这两个指令后。 SS:SP=?

回复列表 (共4个回复)

沙发

SS=2000H,则说明栈底在20000H,而栈位于20000H~3FFFF这句就是错的,空栈的时候SP = 0,不知我的理解是否有误,请高手指正.

板凳

换个说法看看

mov  ax ,1000H
push  ax             

 2FFFdH |———|
 2FFFeH |———|
 2FFFeH |—00—|
 2FFFFH |—10—|  (如果要求push  ax 写入内存,2FFFeH~2FFFFH)
 30000H |———|    运行“push  ax”前 ss:sp 指向的地址? SS=2000H,SP=? 
                       

3 楼

如果把20000H ~ 2FFFFH 当做空的栈段,那么此时SS=2000、SP=0。
因为当栈中有一个元素时SS=2000、SP=FFFE,而空的栈段,就等于把最低部的一个元素出栈,即SP+2,此时SP就等于0。

4 楼

[quote]如果把20000H ~ 2FFFFH 当做空的栈段,那么此时SS=2000、SP=0。
因为当栈中有一个元素时SS=2000、SP=FFFE,而空的栈段,就等于把最低部的一个元素出栈,即SP+2,此时SP就等于0。[/quote]

同意,DEBUG中是这样的,最底部元素出栈后SP为0,SS不变,在此问题中还是2000

我来回复

您尚未登录,请登录后再回复。点此登录或注册