汇编:栈

  栈是一段连续的内存单元,也就是一段连续的内存地址。

 需要特殊的访问形式--才能访问栈。

 

  栈的模型就像一个箱子,通过"入栈","出栈"操作栈这个箱子, 这个箱子还有一个标记"栈顶",永远指向栈的顶部。

 

 从内存角度看: 

  入栈: push,  将16位寄存器或者内存中的字型数据 ----->栈顶标记的上面。

  出栈: pop     将栈顶标记所标识的字型数据 -----> 16位寄存器或内存中。

 

在8086cpu中,在任意时刻,将段地址寄存器ss和偏移地址寄存器sp所组合出来的内存地址当做栈顶标记。

  push ax   # 修改sp寄存器中的数值,  SP = SP - 2

                     将ax中的字型数据 -----> SS:SP所组合出来的内存地址中,  入栈

 

  pop bx  # SS:SP所组合出来的内存地址中的字形数据 ---->  bx

                  修改栈顶标记, SP = SP + 2     出栈

 

改变ss,sp寄存器的内容

栈的越界

      当sp为0了,然后接着执行push操作, ss的值并不会改变,而sp从0000变成FFFE,再执行push, sp就又减2个字节,变成FFFC...sp的变化范围就是0000-FFFF,也就是 2^16个字节,即64kb.

 

栈的作用:

   1. 栈可以临时性保存数据。 2. 可以交换数据。

     交换寄存器中的数据

交换两个内存中的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值