做好的exe文件在dos里直接运行,然后用debug查看没有任何改变。
但是用debug加载一步一步运行,最后查看内存就改变了,这是怎么回事 希望前辈能来解惑一下 漠然 发表于 2013-7-19 13:52 static/image/common/back.gif希望前辈能来解惑一下
希望提供下代码和问题截图。 小甲鱼 发表于 2013-7-19 15:29 static/image/common/back.gif
希望提供下代码和问题截图。
嗯 我在下面放截图 这个是源程序 1是直接运行exe和结果,2是用debug加载运行的和结果。 问题就是直接运行,查看内存并没有改变 漠然 发表于 2013-7-19 20:30 static/image/common/back.gif
1是直接运行exe和结果,2是用debug加载运行的和结果。
程序直接运行并退出后,所有的环境和状态都会弹出栈,也就是恢复默认。在1图中,你是执行完成4.exe,再执行debug.exe,是两个不同的程序哦,在2图中,你是用debug加载4.exe,才是4.exe的内存状态。 漠然 发表于 2013-7-19 20:32 static/image/common/back.gif
问题就是直接运行,查看内存并没有改变
哥们 ~~~鱼大说的就是要在dos中输入:debug 4.exe 这样来调试~~~不知道楼主这个程序是在哪里的~~你push后就直接退出了 程序~~~以前用vs2010写c++中内联汇编的时候我记得 push了数据后 如果没有pop,程序执行到最后会出问题的~~~在汇编中我还没这样试过~~~我去试试这段代码 ~~谢谢哥们发出来做为参考~~~ 小甲鱼 发表于 2013-7-19 22:07 static/image/common/back.gif
程序直接运行并退出后,所有的环境和状态都会弹出栈,也就是恢复默认。在1图中,你是执行完成4.exe,再执 ...
鱼大~~~~在汇编中不用使得栈平衡吗? 他直接push了数据在退出的时候却并没用pop或者其它指令使得栈平衡(我记得以前使用vc中内联汇编的时候,push后数据要pop掉栈里的东西否则堆栈在最后的时候就会崩溃~~~),这里他怎么没出现过这个问题呀~~~~很费解~~~ 小甲鱼 发表于 2013-7-19 22:07 static/image/common/back.gif
程序直接运行并退出后,所有的环境和状态都会弹出栈,也就是恢复默认。在1图中,你是执行完成4.exe,再执 ...
也就是说程序执行完,栈段的内容会恢复默认。但是1中最后显示出来的内容(0,0,0,0......)是在程序里给定的数值,而这段内存原本的默认值并不是0,0,0,0.......这是怎么回事
还有就是只有栈段的内容会恢复,而其他普通段的内容是不会恢复的吗?我自己看是不会恢复的 Crazy迷恋. 发表于 2013-7-19 22:40 static/image/common/back.gif
哥们 ~~~鱼大说的就是要在dos中输入:debug 4.exe 这样来调试~~~不知道楼主这个程序是在哪里的~~你push ...
这个是汇编课本上的课后题 漠然 发表于 2013-7-20 09:44 static/image/common/back.gif
这个是汇编课本上的课后题
我尝试了一下确实是我想多了~~~程序退出的时候栈直接清了~~~~{:1_1:} Crazy迷恋. 发表于 2013-7-20 09:58 static/image/common/back.gif
我尝试了一下确实是我想多了~~~程序退出的时候栈直接清了~~~~
那用debug加载的结果会不会清呢? 小甲鱼 发表于 2013-7-19 22:07 static/image/common/back.gif
程序直接运行并退出后,所有的环境和状态都会弹出栈,也就是恢复默认。在1图中,你是执行完成4.exe,再执 ...
我又试了一下,直接运行之后确实会恢复默认,上面可能是我前面哪里搞错了。但我发现用debug加载运行之后的结果是不会被恢复的,是吗 漠然 发表于 2013-7-20 11:19 static/image/common/back.gif
那用debug加载的结果会不会清呢?
如果 在cmd中输入的是debug 4.exe的话 这样就是向debug程序传入4.exe这个程序,debug会对4.exe这个程序进行调试,debug调试它的时候它就相当于进入运行状态~~~~在运行中内存寄存器的值才会按照我们程序所写的那样正常执行,如果一个程序执行完毕后,内存空间是不属于这个程序的。它是属于整个操作系统自由调配的空间。{:1_1:} 这个是题目和答案,题目要求是将数据储存在B段中,可是答案讲b段设为一个栈段,程序运行之后,栈段就恢复了,这样并没有将数据储存到b段中。这样就和题目要求不符了。 漠然 发表于 2013-7-20 11:27 static/image/common/back.gif
我又试了一下,直接运行之后确实会恢复默认,上面可能是我前面哪里搞错了。但我发现用debug加载运行之后的 ...
16#给了很好的回答~ Crazy迷恋. 发表于 2013-7-19 22:48 static/image/common/back.gif
鱼大~~~~在汇编中不用使得栈平衡吗? 他直接push了数据在退出的时候却并没用pop或者其它指令使得栈平衡( ...
这是有BUG的编程,PUSH就需要POP对应,但就算程序里边只有PUSH没有POP也是没关系的,因为程序退出后,所有的数据会销毁无效啦~ Crazy迷恋. 发表于 2013-7-20 11:29 static/image/common/back.gif
如果 在cmd中输入的是debug 4.exe的话 这样就是向debug程序传入4.exe这个程序,debug会对4.exe这个程序 ...
明白了谢谢
页:
[1]
2