汇编语言里面的堆栈是什么东西啊!

 我来答
禹新美粘景
2020-01-12 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:811万
展开全部
1.堆栈本质上只是普通的内存地址
2.堆和栈本来是两种数据结构,现常用“堆栈”连用仅表示栈。
3.栈的使用方式是临时存放数据,在某一段内存中,从内存地址最后开始存放,像叠盘子一样,只能将最后放入的数据先取出来。
4.栈在汇编语言中经常使用,cpu寄存器中有sp(32位为esp),即stack
pointer,指向当前栈的顶端,汇编语言中的栈并非其他语言中的一种数组型的数据结构,而直接简化为一段内存,通过pop和push等指令来进行直接的内存操作。
5.堆和栈有相似,即皆是一段普通内存,不同点是,堆是顺序存放,且堆只能由程序员申请让系统分配,而栈是程序员自行分配。
6.8086汇编一般无堆,win32汇编中可使用API函数来操作堆。
斋冰莹井恨
游戏玩家

2019-08-28 · 非著名电竞玩家
知道大有可为答主
回答量:1.1万
采纳率:36%
帮助的人:869万
展开全部
栈机制是用来暂存数据的,因为数据不可能都保存在寄存器里面。额,我不知道你对汇编了解不,先来一段代码:
mov
ax,20h
mov
ss,ax
定义了SS的段地址。
mov
sp,10h
定义了栈底。
以上代码定义了栈段。
现在,我要计算100:0-100:10内存单元的和,就需要暂时保存内存单元100:0-100:10的数据:
mov
ax,100h
mov
ds,ax
定义了ds的段地址
mov
cx,11
sub
bx,bx
s:push
[bx]
把100:0压栈
inc
bx
loop
s
上面是一个循环
栈机制是一个很灵活的技术,一定要灵活地掌握,但是我不了解你的情况,也许你需要把问题描述一次
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式