【汇编】栈

栈的基础概念

先出后出的一种数据结构。

栈的地址

由ss:sp指向的内存地址位置为栈段地址,栈的大小由sp控制,sp是栈顶指针,任意时刻指向栈顶。

sp指针当有数据入栈时,从高位地址移向低位地址。
当栈为空的时候,栈内没有元素,也就不存在栈顶元素。ss:sp指向栈的最底部单元下面的单元,地址即为栈最底部的字单元的偏移地址 + 2。

push

入栈指令

mov ax, fffa
; 只能push字形数据。
push ax

push数据后,sp指针移动。

pop

出栈指令

pop ax

pop出来的数据后,sp指针移动,数据出栈不在内存中。

栈的最大空间

64KB,SP 取值范围是 0 ~ FFFFH。
当有16根地址线时,65536个地址(字节),因为 1KB = 1024字节, 所以65536 / 1024 = 64,求得64KB。

栈的越界

写程序的时候要注意栈顶超界的问题,执行出入栈的时候都要注意越界。

posted @ 2023-08-01 11:28  阿初  阅读(31)  评论(0编辑  收藏  举报