. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
主题 : :  栈空间大小 分配  [待解决] 回复[ 18次 ]   点击[ 532次 ]  
sailyfirm
[帖 主] [ 发表时间:2009-11-26 12:41 ] 
荣誉值:0
信誉值:0
注册日期:2009-11-23 10:46
怎么初始化 栈段 空间 大小呢

  3章 说了 栈顶。可这个分配的大小空间 具体有多大呢?

  有点不解。

 希望得到各位的解答 谢谢
zz63948992
[第3楼] [ 回复时间:2013-08-01 23:23 ] 
荣誉值:0
信誉值:0
注册日期:2013-08-01 17:00
谈谈我的想法:
首先,栈的基址是由SS决定的,而SS肯定是16的倍数;
然后,由SP决定栈顶的位置,其值的范围是0000~FFFF,在初始的时候,SP可以取当中任意一个值,当SP=0000时,这个栈的空间达到最大64KB。当0<SP<=FFFF时,SP越大,说明栈的空间越大,SP越小则栈的空间越小。因为,假设不停的PUSH,使得SP不停的-2,减到最后肯定会接近0000,所以,SP越大,栈空间越大,因为可以减的次数多。解释一下为什么SP=0000时,栈的空间达到最大64KB。因为只有
0000H-0002H=FFFEH;或者这样想,假设这个大小为64KB的栈中有最后一个元素,那么此时SP=FFFE,执行POP,弹出这最后一个元素,则SP需要+2,有FFFE+2=10000,而SP是一个16字节的数,只能表达为0000.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved