我们都知道“栈”这个数据结构,它最大的特定就是“后进先出”,那么就会有一个问题?真的存在天生就是“后进先出”的数据结构么?答案是没有!
结论:栈的“后进先出”的规则是由人为规定的。
栈是由两个寄存器组成的:
一个是叫SS寄存器,里面存放的是栈的栈顶的段地址,
一个是叫SP寄存器,里面存放的是偏移地址,也就是栈顶指针。
后进先出:
![](https://img-blog.csdnimg.cn/97d274a20a0f40189d50dffb3b143e45.jpeg)
注:
末尾H代表十六进制
ss+sp 为 段地址x16 + 偏移地址 = 物理地址,这里想了解的话,可以去看 王爽老师的《汇编语言》 pdf链接放在文末了。
推介王爽老师《汇编语言》这里讲的更详细,我这里只是看完之后的一丢丢感悟。
我们可从图上观察到
此时,sp指针地址 = 000EH,我们通过ss+sp得出它在栈中内存单元的地址。
所有我们就可以得出来结论
- 如果我们让sp指针一开始为00FH那么通过ss+sp就可以放在这段内存单元的最下面
- 之后,再往栈的存储单元存值,我们就只能放在00EH,依次从下往上进行访问存储单元
- 这样就实现了后进先出
王爽《汇编语言》pdf
提取码:0000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)