8086汇编二——寄存器和局部变量保护

一个函数只调用一个函数的情况:

894719-5058377f74a467fa.png
一个函数被调用的内存结构图
894719-d408272a091c98e3.png
pop bp

bp用于内部取值,及保护sp。

操纵bp,要么操作局部变量(bp减,因为新数据的地址是越来越小的),要么操作参数(bp加)。

业务逻辑里面都是在操纵bp。


第二种情况:寄存器保护,函数中用到寄存器,且里面有以前的值:

894719-139505ea1e8f5aa3.png
为什么要恢复寄存器中的值
894719-262c6c06e543da71.png

为什么先保护bp和sp,分配完局部变量控件之后,才保护寄存器?
——因为为了方便使用bp操纵局部变量区域。若是先保护寄存器,使用bp取值的时候还要跨过若干个寄存器,用了多少个寄存器是不确定的。


对局部变量区域的处理,填充CC:

894719-865d374020864f63.png


总结

894719-f63dc812f9e59f5e.png
image.png
894719-dd8609d1ea10725c.png
image.png

猜你喜欢

转载自blog.csdn.net/weixin_34162401/article/details/87560810
今日推荐