我们可以将长度为N(N<=64K)的一组地址连续、起始地址为16的倍数的内存单元当作栈来使用,从而定义了一个栈段。
    例如将10010H~1001FH这段长度为16字节的内存空间当作栈来使用,以栈的方式进行访问。这段空间就可以成为栈段,段地址为1000H,大小为16字节。
    将一段内存当作栈段,仅仅是我们在编程时的一种安排,CPU并不会由于这种安排就在执行push、pop等栈操作指令时就自动地将我们定义的栈段当作栈空间来访问。

    一个栈段最大可以设多少?
    分析:首先从栈操作指令所完成的功能的角度上来看,push、pop等指令在执行的时候只修改SP,所以栈顶的变化范围是0~FFFFH,从栈空时候的SP=0,一直压栈,直到栈满时SP=0;如果再次压栈,栈顶将环绕,覆盖原来栈中的内容。所以一个栈段的容量最大为64KB。

    栈段的三个主要用途:
    1:堆栈为函数内部的声明与局部变量提供存储空间
    2:进行函数调用时,堆栈存储与此有关的一些维护性信息,被称为过程活动记录,它包含函数的调用地址,任何不适合装入寄存器的参数以及一些寄存器的值的保存。
    3:可以作为临时缓冲区,比如计算一个很长的表达式时 ,可以先将部分计算的结果压到堆栈上,当需要时再从堆栈上弹出来。

    栈的作用及意义:
    早期的堆栈主要用于保存函数的返回地址,如函数调用(详见函数调用栈),避免造成数据的流失或者数据被覆盖。为面向过程、面向对象而存在。