要求:把10000H-1000FH里的8个字,逆序copy到20000H-2000FH。
我是这么做的。
先进debug
然后 d 1000:0 0 1 2 3 4 5 6 7 8 9 a b c e d f
然后 d 2000:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
然后就 a 2500:0
mov ax,2000
mov ds,ax
mov ax,1000
mov ss,ax
mov sp,0
pop [e]
pop [c]
pop [a]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
最后我r了一下,看看cs和ip是不是指着2500:0,然后就t了几下。
到最后:我d 2000:0 f ,确实是 e f c d a b 8 9 6 7 4 5 2 3 0 1,好象没有问题。
================================================
问题是,我 d 1000:0 f,发觉原来的值变掉了。变成了一些乱七八糟的东西了。
我觉得pop的话,只是拿堆栈里的值去覆盖DS:IP而已。原来SS:SP指向的堆栈里的值不应该变掉啊。真是奇怪。有高人能解释这个现象吗?我实在不能理解。 |