本帖最后由 冰炎梦幻 于 2024-6-29 13:12 编辑
不懂8086。网上搜了下,说下理解。
[Asm] 纯文本查看 复制代码
mov ax,2000H //数2000H放到ax寄存器
mov ds,ax //ax寄存器中的数放入ds(ds应该是默认pop的段地址,我就叫他基址,那么此时2000H*10H就是内存基址了)
__________
__________
__________
pop [E] //栈中的数取出到ds+ E即2000H*10H+E=2000E
pop [C] //栈中的数取出到ds+ E即2000H*10H+E=2000C
......
那缺什么?缺栈地址啊。
于是空空就如下:
mov ax,1000H //数10000H放到ax寄存器
mov ss,ax //ax寄存器中的数放入ss(ss应该是栈的段地址,那么此时1000H*10H就是栈基址了)
mov sp,0000H //sp清零
至于你的疑问。。。。。
1.内存单元的值直接被传送了到了数据段了吗?
是的
2.正常不都是出栈再入栈吗?但给的答案没看到入栈,所以是不是pop后面自动调用了数据段的地址将值入进去了?
正常不都是出栈再入栈吗?错,应该是先入栈再出栈。
大哥,你没看到图里面已经给数据了么,栈已经有数据了。
|