鱼C论坛

 找回密码
 立即注册
查看: 3477|回复: 14

关于push入栈的疑问.

[复制链接]
发表于 2016-7-28 14:43:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mov ax,1000
mov bx,10
mov ss,ax
mov sp,bx
push ax


我在debug中顺序执行这几条指令,为什么执行到 push ax后,看内存1000:0010前面push进去的值,会有些奇怪的数


1.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-7-29 12:53:51 | 显示全部楼层
这里没人了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-29 13:40:39 | 显示全部楼层
请看书75页,那里的问题就是你要的答案
如果不能理解,书上不是说了吗
"因为随着课程的进行,这个问题的答案将逐渐变得显而易见" ^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-29 14:11:01 | 显示全部楼层
人造人 发表于 2016-7-29 13:40
请看书75页,那里的问题就是你要的答案
如果不能理解,书上不是说了吗
"因为随着课程的进行,这个问题的 ...

好吧,谢谢,以我现在所学的知识点还不够解答这个问题,我先把问题留下,继续往后面学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-29 14:36:15 | 显示全部楼层
暮光青年 发表于 2016-7-29 14:11
好吧,谢谢,以我现在所学的知识点还不够解答这个问题,我先把问题留下,继续往后面学习。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-29 20:18:04 | 显示全部楼层
   push ax之后 可能编译器考虑到你要进行 跳转 到别的函数中,所以帮你保存了 标志寄存器的值 占一个字  之后的是 依次是 cs 跟 ip 的值 ,倒着看。 你对比下是吧!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2016-7-30 20:19:53 | 显示全部楼层
1366627538 发表于 2016-7-29 20:18
push ax之后 可能编译器考虑到你要进行 跳转 到别的函数中,所以帮你保存了 标志寄存器的值 占一个字   ...

编译器可没有那么智能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 08:12:38 | 显示全部楼层
人造人 发表于 2016-7-30 20:19
编译器可没有那么智能

我已经试验过了,编译器会帮你将标志寄存器 cs ip 的值保存入栈,但是它不会影响你正常的sp的值,假如你在程序中忘记保存这些值,那么就可以用到。如果不知道它会保存,这些值也不会影响你栈区的使用,不错的机制。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 12:30:44 | 显示全部楼层
1366627538 发表于 2016-7-31 08:12
我已经试验过了,编译器会帮你将标志寄存器 cs ip 的值保存入栈,但是它不会影响你正常的sp的值,假如你 ...

哦?是吗? 你是怎么试验的?
看书 251 页,嗯...从249页开始看吧,单步中断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 13:05:53 | 显示全部楼层
人造人 发表于 2016-7-31 12:30
哦?是吗? 你是怎么试验的?
看书 251 页,嗯...从249页开始看吧,单步中断

我没有书,我只是把楼主的代码直接复制过来,编译运行的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 13:21:26 | 显示全部楼层
1366627538 发表于 2016-7-31 13:05
我没有书,我只是把楼主的代码直接复制过来,编译运行的

你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没有这些值不就知道到底是谁搞的鬼了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 13:22:04 | 显示全部楼层
1366627538 发表于 2016-7-31 13:05
我没有书,我只是把楼主的代码直接复制过来,编译运行的

你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没有这些值不就知道到底是谁搞的鬼了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 13:23:00 | 显示全部楼层
1366627538 发表于 2016-7-31 13:22
你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没 ...

我刚刚遇到个大问题,你也来帮我看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-31 13:43:33 | 显示全部楼层
1366627538 发表于 2016-7-31 13:21
你的意思就是说 debug单独中断会保存这些值,那实验下不就OK了 ,先执行程序,再用debug来查看栈区还有没 ...

好啊,你自己实验吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-1 10:36:16 | 显示全部楼层
应该是要返回的地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 07:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表