. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于栈的大小问题.........  [已解决] 回复[ 5次 ]   点击[ 395次 ]  
742224144
[帖 主]   [ 发表时间:2012-06-28 21:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2012-06-25 19:51
经常看见这样的描述“我们把1000:10~1000:2F的内存空间当栈用”     恩,然后呢,做法是就是ss=1000H,sp=30      可是啊,如果这样描述“我们把1000:0~1000:2F的内存空间当栈用”做法也是ss=1000H,sp=30,,,,那么,通过代码,我们怎么知道栈空间到底有多大呢?纠结啊。是不是这个就根本不能知道,只能是编程的人自己知道,然后让代码不超栈,就行了?????
mengyouhouzi
[第1楼]   [ 回复时间:2012-06-28 23:29 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2012-06-14 13:12
程序设计过程中,栈段是需要定义的,程序员在代码中给出栈空间的,但是编译器在编译及连接时并不检查超栈问题,需要程序员自行检查.所以阅读的程序员可以了解到设计程序的程序员的栈空间大小及开始和结束地址(范围).
    也刚开始学,个人理解如此.
742224144
[第2楼]   [ 回复时间:2012-06-29 15:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2012-06-25 19:51
可是,没有看到代码里有定义栈大小啊,只有栈顶,不知道大小
hysteriant
[第3楼]   [ 回复时间:2012-06-30 10:28 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-12-15 15:16
可是,没有看到代码里有定义栈大小啊,只有栈顶,不知道大小
------------------
回复:

“我们把1000:10~1000:2F的内存空间当栈用”:大小是1002f-10010=20字节
“我们把1000:0~1000:2F的内存空间当栈用”:大小是1002f-10000=30字节
再看书第63页,说了8086CPU无法检测栈的边界,所以只能靠自己编程的时候自己记住栈的大小了。代码里只能知道栈顶,大小无法得知。
我是这么理解的,我也是才看到第三章,欢迎讨论。
nebenweg
[第4楼]   [ 回复时间:2012-07-01 09:11 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2012-07-01 09:02
是的,栈的大小使我们一厢情愿的,CPU只知道栈顶在哪里,不知道你是哪里到哪里是栈,越栈也是我们自己的看法,是防止覆盖掉其他的不属于这个栈的数据
742224144
[第5楼]   [ 回复时间:2012-09-04 04:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2012-06-25 19:51
此贴由 贴主 于 [ 2012-09-04 04:07 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(mengyouhouzi):4分   3楼(hysteriant):2分   4楼(nebenweg):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved