注册 登录
编程论坛 汇编论坛

求助:王爽汇编中关于堆栈的问题

wuyongquan 发布于 2014-08-27 04:32, 5216 次点击
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操作后,堆栈中的数据就消失了。按说堆栈中的数据应该只是被 ‘复制’ 而已吧   求高手帮我看看吧。郁闷了好多天了也想不明白
4 回复
#2
hu9jj2014-08-27 08:05
debug是“模拟”汇编语言的环境,并不是真正的汇编语言环境,debug本身也要使用栈操作。
#3
wuyongquan2014-08-27 21:12
意思就是说真正的汇编语言环境中,堆栈中的数据在进行PUSH和POP操作后不会消失,是这样理解吗
#4
hu9jj2014-08-29 07:26
以下是引用wuyongquan在2014-8-27 21:12:08的发言:

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

我是的样理解的:在出栈操作后,仅仅是栈指针(栈地址寄存器)改变了,堆栈里的数据并不会改变,除非又进行了入栈的操作。
#5
远离的人2014-10-08 16:26
真正的汇编语言环境中,堆栈中的数据在进行PUSH和POP操作后不会消失,楼主遇到的问题是因为在Debug中进行调试时会触发中断程序,而中断程序触发后会利用栈来保存一些信息,比如当前指令地址CS:IP的值,还有标志器的值等。
1