实验3题目的问题 求各位大大help
本帖最后由 ling7 于 2011-11-19 21:29 编辑//ax bx cx dx sp ds es ss cs ip 栈中数据: A B C D E F
mov ax,2000H //2000 0 16 0 0 b97 b97 ba7 ba7 3
mov ss,ax // 2000 6
mov sp,0 // 8
add sp,10 // A B 97 0B 06 32 0B 00
pop ax //0B97 C C 94 05 06 32 0B 00
pop bx // 3206 E D A7 0B 94 05 0B 00
push ax // C E 94 05 97 0B 0B 00
push bx // A F 06 32 97 0B 0B 00
pop ax //3206 C 10 94 05 97 0B 0B 00
pop bx // 0B97 E 11 A7 0B 94 05 0B 00
mov ax,4c00H //4C00 14
int 21H //
我push 数据进去然后pop出来后那个内存地址的数据就发生了改变
是不是它被系统拿去用在别的地方了哦?
那是不是说。。栈空间存储数据进去然后拿出来只能一次性使用。。
如果不是的话。。 那我
ax=1 bx=2push axpush bx
pop ax pop bx ax=2 bx=1
这段内存空间被释放掉。系统拿去存别的内存
然后我再pop axpop bx的时候就不再是 原来的 1 和2了呀。。 额 粘贴之后数据格式改变了。。 如果看起来很蛋疼的话麻烦弄到txt文件。。 上班去了。晚上回来看看有木有人帮忙。。 push之后栈空间增2,栈顶sp=sp-2;
pop之后栈空间缩2,栈顶sp=sp+2;原来的2个内存单元被释放,系统可以使用。
你最后那句话:
“ax=1 bx=2push axpush bx
pop ax pop bx ax=2 bx=2
这段内存空间被释放掉。系统拿去存别的内存
然后我再pop axpop bx的时候就不再是 原来的 1 和2了呀。。”
第一次pop的时候pop bx,bx应该是1;
你再pop ax ,pop bx的时候和之前的1.2没有关系了 这格式,头痛 额 下午发帖的时候 ax=1 bx=2push axpush bx
pop ax pop bx ax=2 bx=2
这段东西打错了现在改回来。。
栈的理论 和poppush书上写的 我知道。。
但是我想知道的是我pop ax和popbx之间 并没有任何 push和mov操作吧。
为什么SS:A的数据会从0594变成0BA7捏? 自己顶。。 求解 你说的SS:A,A是什么。你自己把一楼的格式改改吧,没人愿意去看这么乱的。
你如果弄清楚的话,就该知道在pop操作后原先的栈顶空间被释放,系统可以用这段内存空间的。
页:
[1]