【汇编】栈

栈的基础概念

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

栈的地址

由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 @   阿初  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示