栈是一种具有特殊的访问方式的存储空间,它的特殊在于后进先出

SS:SP指向的存储单元为栈空间(栈的操作都为字操作)SS:SP始终指向栈顶

当栈为空是SP指针指向栈顶元素为栈中最后一个字单元地址+2

也可以说当栈为空时SP指向栈中最后一个存储单元的下一个单元

stack segment

dw 8 dup(0);我们定义一个段使SS:SP指向这个段此时为栈段

stack ends

定义了16个字节的栈空间,内存单元为015,最后一个字单元为14栈顶指向14+2=10H

最后一个字节单元为15下一个单元为16=10H

所以假设一个16字节的栈为空那么SP=10H 

;***********************************************************************************

stack segment

db 16 dup(?) ;申请一个栈空间,大小为16字节单元

stack ends

code segment

mov ax,stack

mov ss,ax ;设栈段为1000H 表1

mov ax,1234H

mov sp,10H ;SP指向栈顶

push ax ;执行入栈指令,执行完之后SP指向新的栈顶 表2

code ends

SS:SP=1000:0 初始栈中数据(假设栈为空,栈大小10000H~1000FH)表1
内存地址备注
NULL10000H 
NULL10001H 
NULL10002H 
NULL10003H 
NULL10004H 
NULL10005H 
NULL10006H 
NULL10007H 
NULL10008H 
NULL10009H 
NULL1000AH 
NULL1000BH 
NULL1000CH 
NULL1000DH 
NULL1000EH 
NULL1000FH 
 10010H<--当栈为空时SS:SP指向这里

   
   
push ax (SP=SP-2,AX入栈) -表2
内存地址备注
NULL10000H 
NULL10001H 
NULL10002H 
NULL10003H 
NULL10004H 
NULL10005H 
NULL10006H 
NULL10007H 
NULL10008H 
NULL10009H 
NULL1000AH 
NULL1000BH 
NULL1000CH 
NULL1000DH 
34H1000EH<--SS:SP=1000:E指向新的栈顶
12H1000FH 
 10010H 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值