一个关于栈数据的问题,搞不明白,请指点
本人刚学汇编,在用王爽老师的《汇编语言》第二版,刚学完栈这章,然后发现了一个问题,主要是栈在出栈和入栈时栈段内容变化,mov ax,1000
mov ss,ax
mov sp,10
mov ax,1234
mov bx,5678
push ax
push bx
mov ax,0
mov bx,0
pop bx
pop ax
在上面的代码执行前,先将栈清0
-e 1000:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
执行-d 1000:0 f
1000:0000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
用t命令执行,当执行到mov ax,1234这行命令前(还没有执行)栈的内容变成:
1000:0000 00 00 00 00 00 00 10-00 00 08 01 30 0c 94 06
这个栈的变化我能理解
再执行mov ax,1234命令,ax=1234,下一条命令是mov bx,5678
我再查看栈的内容,变成:
1000:0000 00 00 00 00 00 34 12-00 00 0B 01 30 0c 94 06
这里就不明白了,AX的内容我还没有入栈,为什么它在栈中出现呢?
010B这里就不用解释了,是IP指向。
再执行mov bx,5678,栈的内容为:
1000:0000 00 00 00 00 00 34 12-00 00 0E 01 30 0c 94 06
这里,为什么BX的值没在栈中出现值呢,然后执行完MOV AX,0这条,栈的内容又变成:
1000:0000 00 00 00 00 00 13 01-30 0C 94 06 78 56 34 12
出栈的情况也是一样,最后栈段[06]处还是AX的值,BX的值为什么不出来呢?
1000:0000 00 00 00 00 00 34 12-00 00 18 01 30 0c 94 06
这个是什么问题呢?
后面的章节还没学,我是先想巩固一下前面薄弱的知识,再向后学习。请大大们为我批出一下!