3.6 栈
在这里,我们对栈的研究只限于这个角度,栈是一种具有特殊访问方式的存储空间。它的特殊性在于,最后进入这个空间的数据,最先出去,后进先出(LIFO---last in first out)。
.CPU提供的栈机制
8086CPU提供入栈和出栈指令,最基本的如同push ax,表示将寄存器ax中的数据入栈,pop ax,表示将栈顶数据弹出送入ax,8086中的入栈和出栈操作都是以字为单位的。
CPU如何知道当前要执行的指令所在的位置?CS、IP中存放着当前指令的段地址和偏移地址。
CPU如何知道栈顶的位置?有两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。SS*16+SP=栈顶元素地址。8086CPU入栈时,栈顶从高地址向低地址增长。
.栈的越界问题
.push、pop指令
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并获取更多隐藏干货,QQ交流群:816747642 微信公众号:Crystal软件学堂
作者:Crystal软件学堂 bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |