. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于空栈栈顶指针问题  [待解决] 回复[ 1次 ]   点击[ 389次 ]  
lin1712
[帖 主]   [ 发表时间:2010-06-03 15:23 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-06-01 10:03
P68 问题3.11所述,10000H~1FFFFH段作为栈,结论空栈时SP指向0。
首先,10000H~1FFFFH作为新建栈的空间,栈指针却超出了该范围?如果进栈SP-2=-2?
其次,如果20000H~2FFFFH作为新建栈的空间,空栈时SP又是多少?
再次,如果我们以10000H作为栈底即空栈的栈顶,每一个字进栈SP+2,出栈SP-2,并且无论栈的起始地址,都可以用SP=0做为空栈的标志。不知道汇编语言为什么要采用高位地址做栈底,进栈减出栈加的方式呢?

新手大胆发言,如有问题敬请指出!
scuzg
[第1楼]   [ 回复时间:2010-06-07 20:36 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
当堆栈初始化时,SP指向堆栈之外,即指向比栈底偏移量大2的地址。
如果sp的初值为0,如果进栈,则sp-2后为-2或0fffeh,这0fffeh就是当堆栈的容量为64K时栈底的偏移量。
如果20000H~2FFFFH作为新建栈的空间,空栈时SP也是0。
至于楼主的“再次”说到“每一个字进栈SP+2,出栈SP-2”是不正确的。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved