(1)
使用debug,将下面的程序段写入内存,逐条执行,根据指令后的实际运行情况填空。
用t命令执行:
就此可知:
mov ax,[0]; ax=C0EAH
mov ax,[2]; ax=C0FCH
mov bx,[4]; bx=30F0H
add bx,[6]; bx=6021H
push ax; sp=0100H;修改的内存单元的地址是2200:FE,内容为C0FCH
push bx; sp=00FCH;修改的内存单元的地址是2200:FC,内容为6021H
pop ax; sp=00FEH;ax= 6021H
pop bx; sp=0100H;bx=C0FCH
push [4]; sp=00FEH;修改的内存单元的地址是2200:FE,内容为30F0H
push [6]; sp=00FCH;修改的内存单元的地址是2200:FC,内容为2F31H
(2)仔细观察图中实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?
用t命令和d命令交替进行,查看内存的改变:
猜想:也许栈中也包含着ss,sp的数据,最后清空的时候,这些数据也随之消失。
总结:
铜鼓实验二,我从中学到了栈的内存地址的变化方式,也明白了栈的先进先出的特点。
同时对实验中猜想有所思考,这将对以后学习有所帮助。