栈是一种具有特殊访问方式的储蓄空间,他的特殊性在于在后一个进栈的最先出栈。

栈有两个基本元素,一个是入栈一个是出栈
入栈:将一个新元素放入栈顶
出栈:从栈顶取出一个元素

出栈和入栈的指令:PUSH(入栈)POP(出栈)
PUSH ax:将寄存器ax中的数据送入栈;
POP  ax:从栈顶取出数据送入ax。

注意:字型数据是用两个单元存放的,高地址单元放高8位,低地址单元放低8位。

CPU如何指导当前要执行的指令所在的位置?
答:寄存器CS和IP中存放着当前指令的段地址和偏移地址。

8086CPU中,有两个寄存器:
段寄存器SS  存放栈顶的段地址
寄存器SP     存放栈顶的偏移地址
任意时刻,SS:SP指向栈顶元素。

执行push ax CPU会怎么操作
(1)SP=SP-2
(2)将ax中的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶。

执行POP ax CPU会怎么操作
(1)将SS:SP指向的内存单元处的数据送入ax中;
(2)SP=SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面为新的栈顶。

当栈是空得时候偏移指针是指向栈的最高地址的下一个地址。


栈与内存
栈空间当然是内存的一部,它只是一段可以以一种特殊的方式进行访问的内存。

phsh 和 pop 指令的格式
push 寄存器:将一个寄存器中的数据入栈
pop寄存器:出栈,用一个寄存器接受栈的数据

执行push时:先改变SP,后向SS:SP传送
执行pop时:先读取SS:SP数据,后改变SP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值