实验结论
(1)
mov ax,[0];ax=3130H
add ax,[2];ax=6462H
mov bx,[4];bx=3534H
add bx,[6]; bx=6C6AH
push ax;sp=00FEH;修改的内存单元的地址是220FE内容是6462H
push bx;sp=00FCH;修改的内存单元的地址是220FC内容是6C6AH
pop ax;sp=00FFH;ax=6C6AH
pop bx;sp=0100H; bx=6462H
push [4];sp=00FEH;修改的内存单元的地址是220FE内容是3534H
push [6];sp=00FCH;修改的内存单元的地址是220FC内容是3736H
与所预测结果一致。
(2)
初始SS=073FH SP=00FDH
前3行汇编指令的功能
mov ax,2000;ax=2000将2000装入ax
mov ss,ax;ss=ax将栈底设置为2000:0000
mov sp,10;sp=10将栈顶设置为10H
2000:0-2000:f改变的原因估计与ss,sp的赋值改变有关系。
总结与体会
栈作为一种cpu提供的机制先入后出,可以通过push 和pop指令容易地实现功能
但是没有检查机制,容易产生越界(栈顶超界而产生问题)
通过改变ss,sp的值,来安排内存中栈的位置,虽然对其中的一些细节问题还没有完全搞清楚(如第2个实验里面的2000:0H 处长fH的值的改变)
但是在接下来的学习中,我希望我能搞懂他们。