ASM_3堆栈

 堆栈

栈:只有一个出口
栈顶:最后一个数据的存放位置

SS:SP 来感知堆栈,并且 SS:SP任何时候都指向栈顶
SS*16 + SP 指向的内容就是栈的空间

SS存放栈的基地址
SP存放栈的偏移地址

入栈:
将AX中的数据存入SS:SP指向的内存,并且SS:SP指向新的栈顶
新栈顶的位置计算:SP-2

入栈地址是从高字节到低字节排列

原始状态:
    1408:FFFC
    1408:FFFD
    1408:FFFE <-SS:SP
    1408:FFFF

PUSH ax 入栈以后
    1408:FFFC <-SS:SP  //会指向新的栈顶 SP-2
    1408:FFFD
    1408:FFFE 34
    1408:FFFF 12

POP ax 出栈以后
    1408:FFFC
    1408:FFFD
    1408:FFFE <-SS:SP  //会指向新的栈顶 SP+2
    1408:FFFF


入栈出栈的例子:
mov ax,1111
mov bx,2222
mov cx,3333
push ax //把AX里的值放入 SS:SP指向的空间
push bx
push cx
pop ax //把ss:sp指向的空间的值  放入AX
pop bx
pop cx


栈顶超界(栈满再入栈),栈空再出栈:
需要开发人员记住入栈出栈的数量,防止危险
数据段
栈段
代码段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值