漠然 发表于 2013-7-25 22:09:58

哥哥们来帮我看看这个源程序哪里不对。。。

这个我是想看看栈段在pop 数据出栈之后原来的数据还会不会存在。可是在运行的时候到pop bx就直接弹出了,哪里出问题了

Jany 发表于 2013-7-25 22:49:41

本帖最后由 Jany 于 2013-7-25 22:53 编辑

数据是存在的,只不过栈顶指向改变了,好像你的入栈只有一个吧,你再加个入栈数据看下

牡丹花下死做鬼 发表于 2013-7-26 00:54:08

据我所知出栈的话仅仅改变栈顶指向 不会对内存中的数据有影响
至于你为什么会弹出 本菜不知道 sorry

飞雪 发表于 2013-7-26 06:43:44

不知道你写的什么意思{:5_94:}

wocaoni 发表于 2013-7-26 07:42:39

其实你压入栈只有一次,出栈有2次。至于这样会导致什么错误呢,我想大概是堆栈不平衡了。

福禄娃娃 发表于 2013-7-26 08:41:34

栈的机制决定了他在使用完之后,只是移动了sp,里面的数据却没有被破坏,除非下次再次入栈,便会覆盖之前的数据。

执行完了pop ax pop bx 后 ax的值为0008 bx的值为0007
可直接在debug下查看ss:sp对应的栈值还是0001到0008八个字的数据

你用p指令执行完pop bx后程序正常退出,因为debug下无法下断点,你可以用emu8086下断点在mov ax, 4c00h,然后查看之前栈的内容。
页: [1]
查看完整版本: 哥哥们来帮我看看这个源程序哪里不对。。。