来源:互联网 发布:java ant 编辑:程序博客网 时间:2024/04/28 07:42

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

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 

原创粉丝点击