| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:内存中已经清零的数据为什么会变呢?
只看楼主 加入收藏
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
内存中已经清零的数据为什么会变呢?
各位高手,下面的代码我想了好久也没有想出是什么原因,我明明把地址2000:0000  000f中的数据已经被清零了,为什么运行代码后,该地址中的数据却变了呢,这个问题让我天天吃不下饭,不知何故,请高手赐教。。。。
-a
0B30:0100 B80020        MOV     AX,2000
0B30:0103 8ED0          MOV     SS,AX
0B30:0105 BC1000        MOV     SP,0010
0B30:0108 B82331        MOV     AX,3123
0B30:010B 50            PUSH    AX
0B30:010C B86633        MOV     AX,3366
0B30:010F 50            PUSH    AX
-e 2000:0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-d 2000:0000 f
2000:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=0B30  CS=0B30  IP=0100   NV UP EI PL NZ NA PO NC
0B30:0100 B80020        MOV     AX,2000
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=0B30  CS=0B30  IP=0103   NV UP EI PL NZ NA PO NC
0B30:0103 8ED0          MOV     SS,AX
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=2000  CS=0B30  IP=0108   NV UP EI PL NZ NA PO NC
0B30:0108 B82331        MOV     AX,3123
-d 2000:0 f
2000:0000  00 00 00 00 00 00 00 20-00 00 08 01 30 0B 94 05   ....... ....0...
-
这个代码是王爽编著的《汇编语言》第三章的实验任务中的问题。
搜索更多相关主题的帖子: 内存 数据 
2010-12-12 22:48
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:5 
这个问题和中断有关的,书后面有讲到,慢慢学,别太着急.

技术问题,请不要以短消息方式提问
2010-12-12 22:51
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:5 
AX=2000  BX=0000  CX=0000  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=2000  CS=0B30  IP=0108   NV UP EI PL NZ NA PO NC
0B30:0108 B82331        MOV     AX,3123
-d 2000:0 f
2000:0000  00 00 00 00 00 00 00 20-00 00 08 01 30 0B 94 05   ....... ....0...
-
看标记的东西
堆栈初始化吧!
像ss和sp的设置只出现了MOV SS,AX 而MOV SP,10没出现,这是由于防止设置堆栈时出现中断(破坏堆栈建立),而关掉了中断,这两条指令是连续执行的
也不是很懂(94 05 我就不知是什么),求高手赐教!
(注意,数据都不在堆栈内)


[ 本帖最后由 xiaomarn 于 2010-12-13 20:13 编辑 ]
2010-12-13 20:08
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
首先谢谢各位了,楼上说的我视乎懂了些,但还是不太懂,还是慢慢学吧,等学完了就知道答案了。

2010-12-13 20:34
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
LZ你好,能不能麻烦你把你debug下的d 0:0截个图给我看下,谢了,呵呵

技术问题,请不要以短消息方式提问
2010-12-13 23:52
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
这是我d 0:0的截图:
图片附件: 游客没有浏览图片的权限,请 登录注册

2010-12-14 18:25
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
好的,真是麻烦你了,能不能执行2次t命令再截张d 0:0d的图,因为数据会有变化,感谢

技术问题,请不要以短消息方式提问
2010-12-14 20:09
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

2010-12-15 22:56
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
上面那张图还是原来的d 0:0,就是希望您能先执行2次t命令,再给个d 0:0的图,因为int 1和int 3会产生变化,地址可能会和94 05有关,只是猜测,呵呵.

技术问题,请不要以短消息方式提问
2010-12-16 09:37
快速回复:内存中已经清零的数据为什么会变呢?
数据加载中...
 
   



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

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