| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 500 人关注过本帖
标题:一个关于栈数据的问题,搞不明白,请指点
只看楼主 加入收藏
kingsgg
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一个关于栈数据的问题,搞不明白,请指点
本人刚学汇编,在用王爽老师的《汇编语言》第二版,刚学完栈这章,然后发现了一个问题,主要是栈在出栈和入栈时栈段内容变化,
mov ax,1000
mov ss,ax
mov sp,10
mov ax,1234
mov bx,5678
push ax
push bx
mov ax,0
mov bx,0
pop bx
pop ax
在上面的代码执行前,先将栈清0
-e 1000:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
执行-d 1000:0 f
1000:0000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
用t命令执行,当执行到mov ax,1234这行命令前(还没有执行)栈的内容变成:
1000:0000 00 00 00 00 00 00 10-00 00 08 01 30 0c 94 06
这个栈的变化我能理解
再执行mov ax,1234命令,ax=1234,下一条命令是mov bx,5678
我再查看栈的内容,变成:
1000:0000 00 00 00 00 00 34 12-00 00 0B 01 30 0c 94 06
这里就不明白了,AX的内容我还没有入栈,为什么它在栈中出现呢?
010B这里就不用解释了,是IP指向。
再执行mov bx,5678,栈的内容为:
1000:0000 00 00 00 00 00 34 12-00 00 0E 01 30 0c 94 06
这里,为什么BX的值没在栈中出现值呢,然后执行完MOV AX,0这条,栈的内容又变成:
1000:0000 00 00 00 00 00 13 01-30 0C 94 06 78 56 34 12
出栈的情况也是一样,最后栈段[06]处还是AX的值,BX的值为什么不出来呢?
1000:0000 00 00 00 00 00 34 12-00 00 18 01 30 0c 94 06
这个是什么问题呢?
后面的章节还没学,我是先想巩固一下前面薄弱的知识,再向后学习。请大大们为我批出一下!

搜索更多相关主题的帖子: 数据 
2012-03-02 11:44
笨蛋侦探
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2012-3-1
收藏
得分:7 
搞不懂。。。        
2012-03-02 17:32
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:7 
有相关帖子,自己搜

技术问题,请不要以短消息方式提问
2012-03-03 17:18
wangxiaohu
Rank: 2
等 级:论坛游民
帖 子:19
专家分:29
注 册:2012-4-4
收藏
得分:0 
我运行没有问题,可能操作问题

细节!细节!细节!
2012-04-07 00:22
快速回复:一个关于栈数据的问题,搞不明白,请指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015872 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved