标题:求助:王爽汇编中关于堆栈的问题
只看楼主
wuyongquan
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-8-25
结帖率:75%
已结贴  问题点数:10 回复次数:4 
求助:王爽汇编中关于堆栈的问题
assume cs:code,ss:stack
stack segment
db 16 dup (20h)
stack ends
code segment
start:mov ax,stack
        mov ss,ax
        mov sp,0010h
        mov ax,'ab'
        push ax
        pop bx
        mov ax,c00h
        int 21h
code ends
end start
代码是这样,用debug单步调试时,对堆栈中的数据进行PUSH和POP操作后,堆栈中的数据就消失了。按说堆栈中的数据应该只是被 ‘复制’ 而已吧   求高手帮我看看吧。郁闷了好多天了也想不明白
搜索更多相关主题的帖子: start 
2014-08-27 04:32
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:5 
debug是“模拟”汇编语言的环境,并不是真正的汇编语言环境,debug本身也要使用栈操作。

活到老,学到老! http://www. E-mail:hu-jj@
2014-08-27 08:05
wuyongquan
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-8-25
得分:0 
意思就是说真正的汇编语言环境中,堆栈中的数据在进行PUSH和POP操作后不会消失,是这样理解吗
2014-08-27 21:12
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:5 
以下是引用wuyongquan在2014-8-27 21:12:08的发言:

意思就是说真正的汇编语言环境中,堆栈中的数据在进行PUSH和POP操作后不会消失,是这样理解吗

我是的样理解的:在出栈操作后,仅仅是栈指针(栈地址寄存器)改变了,堆栈里的数据并不会改变,除非又进行了入栈的操作。

活到老,学到老! http://www. E-mail:hu-jj@
2014-08-29 07:26
远离的人
Rank: 1
等 级:新手上路
威 望:1
帖 子:10
专家分:0
注 册:2013-12-18
得分:0 
真正的汇编语言环境中,堆栈中的数据在进行PUSH和POP操作后不会消失,楼主遇到的问题是因为在Debug中进行调试时会触发中断程序,而中断程序触发后会利用栈来保存一些信息,比如当前指令地址CS:IP的值,还有标志器的值等。
2014-10-08 16:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-435379-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.933418 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved