栈顶有一个B612不停的移动,为什么?
时间:2011-12-17
来源:互联网
我用下面代码在虚拟DOS下用debug观察压栈:
Assembly code
发现栈顶有一个 B612不停的移动,为什么?
其次,我想观察栈溢出后的情况,但执行到sp=0004时,自动退出了loop。
为什么?
谢谢!
Assembly code
assume cs:code code segment mov ax,1001h mov ss,ax mov sp,0010h mov cx,60h ;希望观察栈溢出 mov ax,4444h s: push ax loop s mov ax,4c00h int 21h code ends end
发现栈顶有一个 B612不停的移动,为什么?
其次,我想观察栈溢出后的情况,但执行到sp=0004时,自动退出了loop。
为什么?
谢谢!
作者: hztj2005 发布时间: 2011-12-17
如果sp 值设置太小,那么就无法实现 指定次数的进栈。 每次进栈, 使用 d命令 查看栈内存,都会发现, 内存单元里的内容都 莫名其妙的发生改变,当然也包括 自己进栈的 内容。内存单元里的内容都 莫名其妙的发生改变,那么就导致 占用 自己那么 进栈 数据需要使用的内存。
可是,为什么会发生这种改变呢?
可是,为什么会发生这种改变呢?
作者: wenxian8 发布时间: 2011-12-17
引用 1 楼 wenxian8 的回复:
如果sp 值设置太小,那么就无法实现 指定次数的进栈。 每次进栈, 使用 d命令 查看栈内存,都会发现, 内存单元里的内容都 莫名其妙的发生改变,当然也包括 自己进栈的 内容。内存单元里的内容都 莫名其妙的发生改变,那么就导致 占用 自己那么 进栈 数据需要使用的内存。
可是,为什么会发生这种改变呢?
如果sp 值设置太小,那么就无法实现 指定次数的进栈。 每次进栈, 使用 d命令 查看栈内存,都会发现, 内存单元里的内容都 莫名其妙的发生改变,当然也包括 自己进栈的 内容。内存单元里的内容都 莫名其妙的发生改变,那么就导致 占用 自己那么 进栈 数据需要使用的内存。
可是,为什么会发生这种改变呢?
我也是观察发现这个现象。原因不明。只能推测:
我们都不是在实模式下运行DOS,是保护模式下运行的虚拟DOS,可能是Windows 操作系统对虚拟DOS提供的一种标志。
慢慢探索吧。
作者: hztj2005 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28