栈段 ——满是疑问==
October 3, 2013
masm
遇到一个问题
比如:
用栈操作将10000H~1000FH中的8个字,逆序拷贝到2000H~2000FH中。
写出以下代码:
mov ax, 2000h
mov ds, ax
mov ax, f00h
mov ss, ax
mov sp, 1000h
pop [e]
pop [c]
pop [a]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
开始我还以为可能是栈空间太小,跟以前一样的问题,特意把栈的短地址缩小到f00h,可是还是结果不对,跟踪之后我发现,
拷贝过去的内容是对的,但是10000H处的内容却被改写了。现在我还是不知道为什么,为什么这个内存地址的内容会被改变呢?
满是疑惑……=_=
……………………………………………………………………==………………………………………………………………………………
刚才又遇到了类似的问题。
貌似明白一点了。只是猜的=_=。虽然不知道为什么,但是表面上懂一点了。
当内存中的某个段当做栈顶的时候,也就是说寄存器ss改变的时候,可能会在附近记录CS,IP,SS的值。还是没有完全明白……越来越混乱了……==