关于8086汇编栈的疑问

逆风出击的程序猿 2024-04-14 22:00:39

写了一段汇编demo代码,代码如下

 

img

 

可以看到,我定义了一个连续的16个字节的栈段,这16个字节我设置成了全0数据

程序刚刚载入的时候。栈段的数据是这样的,确实是全0数据

 

img

 

再执行一会,这个栈段已经不全为0了

 

img

 

把push全部执行完,可以看到,前6个字节的数据是对的,确实是push进来的数值,但是后面的10个字节数据并不是全是0

 

img


这是为啥,有木有帮忙解答一下

 

...全文
225 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1

debug单步的时候也是要使用程序栈空间的

  • 举报
回复
@日立奔腾浪潮微软松下联想 原来如此,向大佬学习
zara 2024-04-15
  • 打赏
  • 举报
回复

使用了堆栈,无论是自己的 push 或 call 或其它中断,再还原时,是不清理或还原堆栈空间的内容的,只还原堆栈指针(即堆栈可用空间的位置),所以,那些应该是刚使用过堆栈的数据遗留;当然,这些是限于小于堆栈指针的那些部分,大于等于堆栈指针的部分是不应该被改写的,否则就应是溢出了,可能会引发不测后果。

21,489

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧