MyException - 我的异常网
当前位置:我的异常网» 汇编语言 » 新手学汇编,前辈一个有关问题

新手学汇编,前辈一个有关问题(2)

www.myexceptions.net  网友分享于:2013-04-10  浏览:2次

182A:0008 C3            RET
-d 1829:0 f                                                             ;查看栈段值
1829:0000  00 00 00 00 00 00 29 18-00 00 08 00 2A 18 2A 12              ;值发生变化了(?)

-t                                                                      ;执行ret命令
AX=1829  BX=0000  CX=0019  DX=0000  SP=0012  BP=0000  SI=0000  DI=0000
DS=1819  ES=1819  SS=1829  CS=182A  IP=29B8   NV UP EI PL NZ NA PO NC
182A:29B8 7F04          JG      29BE
-d 1829:0 f                                                             ;查看栈段值
1829:0000  00 00 00 00 00 00 29 18-29 18 00 00 B8 29 2A 18              ;值又发生了变化(?)

请问在上面这段代码的执行过程中,都没有堆栈段进行入栈、出栈(push、pop)操作,为什么栈段中的值会发生变化呢?
汇编 栈段

------解决方案--------------------
因为 debug 本身需要使用这个堆栈。
------解决方案--------------------
ret 指令会修改堆栈的
------解决方案--------------------
发现没?最后执行RET后 栈段的最后为B8 29 2A 18 正好是CS:IP,这是RET指令引起的

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有