0%

汇编语言学习笔记(八)

3.10 栈段

我们可以将长度为N(N <= 64k)的一组地址连续、起始地址为16的倍数的内存单元,当作栈来用,从而定义了一个栈段。

截屏2021-07-05 上午9.50.40

问题:3.11

如果我们将10000H~1FFFFH这段空间当做栈段,初始状态是空的,此时,SS=1000H,SP=?

换位思考:

栈为空,相当于栈中唯一的元素出栈,出栈后,SP=SP+2。

  • SP原来为FFFEH,加2后SP=0,所以,当栈为空的时候,SS=1000H,SP=0。

问题:3.12

一个栈段最大可以设为多少?

所以栈顶的变化范围是0~FFFFH,所以一个栈段的容量最大是64KB

(01H,容量为2, 0FFFF,容量为10000H,即64KB = 2^16)

截屏2021-07-05 下午12.33.47

  • 数据段:段地址放在DS中
  • 代码段:段地址放在CS中,第一条指令的偏移地址放在IP中。
  • 栈段:段地址放在SS中,栈顶单元的偏移地址放在SP中