【汇编】栈
栈
栈的基础概念
先出后出的一种数据结构。
栈的地址
由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。
栈的越界
写程序的时候要注意栈顶超界的问题,执行出入栈的时候都要注意越界。