. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于堆栈的一点问题  [已解决] 回复[ 8次 ]   点击[ 547次 ]  
jianrufeng
[帖 主]   [ 发表时间:2008-04-07 10:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-04-07 10:16
我是汇编语言的 初学者对汇编还不是很了解,请大家多帮助一点``
堆栈中关于栈顶和栈底的位置搞不明白,比如堆栈段是从10000h到1000fh当为空栈是问栈顶和栈底的值分别是多少?
langman
[第1楼]   [ 回复时间:2008-04-07 16:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-24 15:57
前几天看到这里的时候,我也就这个问题共同请教一下, 栈的排列到底是怎么一个排列法, 比如说, push ax 这个时候我们把寄存器里的数据进行入栈的时候,那么ax里的数据是清零了还是依然存在,只是转移到栈段里了。请高人连楼上的兄弟一起给解释下.
sysnap
[第2楼]   [ 回复时间:2008-04-08 17:33 ]   [引用]   [回复]   [ top ] 
荣誉值:32
信誉值:0
注册日期:2008-01-15 12:22
关于栈的内容我记得第三章讲过。

比如堆栈段是从10000h到1000fh当为空栈是问栈顶和栈底的值分别是多少?
----
既然这段空间当做栈使用,就相当于一个多层的纸盒子,最上面的就是栈顶,最下面的就是栈底了。
栈底:10000h
栈顶:1000fh
当栈是空的时候sp=1000fh+1=10010h,这样当push的时候,sp=sp-2,sp才执行1000Eh,存入第一个字。

当执行push ax ,的时候,根据push指令的操作步骤,并不会影响ax的值,也就是执行完push ax执行后,ax的值是没有变化的。(早期计算机是很珍贵的,既然push保存了ax的值,又何必多做一次操作清ax的值呢:-),等待其他的操作覆盖ax不跟好)
至于楼上说的“栈的排列到底是怎么一个排列法”,我觉得看完第三章关于栈的介绍就明白了。
wdm
[第3楼]   [ 回复时间:2008-04-08 20:51 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
比如堆栈段是从10000h到1000fh当为空栈是问栈顶和栈底的值分别是多少?
===========
栈底就是地址最小的那个地址,而栈顶就是最大的地址处,不过,当栈空的时候,sp指向的位置是栈定的下一个字节,这个是需要注意的。
langman
[第4楼]   [ 回复时间:2008-04-09 16:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-24 15:57
感谢,辛苦了楼上的两位老师.
jianrufeng
[第5楼]   [ 回复时间:2008-04-09 17:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-04-07 10:16
好像不对吧,当是空栈的时候栈底和栈顶指向同一个单元。sp=10010应该是正确的吧,我们老师是这样的说的不过不太确定。不过为栈底和栈顶指向同一单元应该是确定的,大家再看一下
sysnap
[第6楼]   [ 回复时间:2008-04-10 09:36 ]   [引用]   [回复]   [ top ] 
荣誉值:32
信誉值:0
注册日期:2008-01-15 12:22
确实有些糊涂了,谢谢楼上提醒了,一个栈申请完后,栈底是固定的,也就是申请栈的高地址,例如上面的10010h(=1000fh+1)。---至于这个100010h是栈底,我是这样理解的,1000e和1000f这两个字节单元是可以放一个字数据的,所以栈底应该是指向下面的一个地址,也就是10010H了。

因为初始化栈后,栈是空的,此时栈顶和栈底指向同一个地址。

随之一次push,sp=sp-2,栈顶移动,栈底不变,ss:sp执行栈最底部的字单元,如上的1000:000E。
jianrufeng
[第7楼]   [ 回复时间:2008-04-11 15:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-04-07 10:16
恩,我感觉也是这样的。非常感谢楼上的各位能够帮我解决这个疑问。
jianrufeng
[第8楼]   [ 回复时间:2008-04-11 15:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-04-07 10:16
此贴由 贴主 于 [ 2008-04-11 15:52 ] 结贴。 结贴原因:问题已解决
得分情况: 2楼(sysnap):4分   3楼(wdm):4分   6楼(sysnap):6分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved