关于push入栈的疑问.
mov ax,1000mov bx,10
mov ss,ax
mov sp,bx
push ax
我在debug中顺序执行这几条指令,为什么执行到 push ax后,看内存1000:0010前面push进去的值,会有些奇怪的数
这里没人了? 请看书75页,那里的问题就是你要的答案
如果不能理解,书上不是说了吗
"因为随着课程的进行,这个问题的答案将逐渐变得显而易见" ^_^ 人造人 发表于 2016-7-29 13:40
请看书75页,那里的问题就是你要的答案
如果不能理解,书上不是说了吗
"因为随着课程的进行,这个问题的 ...
好吧,谢谢,以我现在所学的知识点还不够解答这个问题,我先把问题留下,继续往后面学习。 暮光青年 发表于 2016-7-29 14:11
好吧,谢谢,以我现在所学的知识点还不够解答这个问题,我先把问题留下,继续往后面学习。
嗯 push ax之后 可能编译器考虑到你要进行 跳转 到别的函数中,所以帮你保存了 标志寄存器的值 占一个字之后的是 依次是 cs 跟 ip 的值 ,倒着看。 你对比下是吧!! 1366627538 发表于 2016-7-29 20:18
push ax之后 可能编译器考虑到你要进行 跳转 到别的函数中,所以帮你保存了 标志寄存器的值 占一个字 ...
编译器可没有那么智能 人造人 发表于 2016-7-30 20:19
编译器可没有那么智能
我已经试验过了,编译器会帮你将标志寄存器 cs ip 的值保存入栈,但是它不会影响你正常的sp的值,假如你在程序中忘记保存这些值,那么就可以用到。如果不知道它会保存,这些值也不会影响你栈区的使用,不错的机制。 1366627538 发表于 2016-7-31 08:12
我已经试验过了,编译器会帮你将标志寄存器 cs ip 的值保存入栈,但是它不会影响你正常的sp的值,假如你 ...
哦?是吗? 你是怎么试验的?
看书 251 页,嗯...从249页开始看吧,单步中断 人造人 发表于 2016-7-31 12:30
哦?是吗? 你是怎么试验的?
看书 251 页,嗯...从249页开始看吧,单步中断
我没有书,我只是把楼主的代码直接复制过来,编译运行的 1366627538 发表于 2016-7-31 13:05
我没有书,我只是把楼主的代码直接复制过来,编译运行的
你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没有这些值不就知道到底是谁搞的鬼了? 1366627538 发表于 2016-7-31 13:05
我没有书,我只是把楼主的代码直接复制过来,编译运行的
你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没有这些值不就知道到底是谁搞的鬼了? 1366627538 发表于 2016-7-31 13:22
你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没 ...
我刚刚遇到个大问题,你也来帮我看看吧{:5_92:} 1366627538 发表于 2016-7-31 13:21
你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没 ...
好啊,你自己实验吧 应该是要返回的地方
页:
[1]