汇编语言里面的堆栈是什么东西啊!
2个回答
展开全部
1.堆栈本质上只是普通的内存地址
2.堆和栈本来是两种数据结构,现常用“堆栈”连用仅表示栈。
3.栈的使用方式是临时存放数据,在某一段内存中,从内存地址最后开始存放,像叠盘子一样,只能将最后放入的数据先取出来。
4.栈在汇编语言中经常使用,cpu寄存器中有sp(32位为esp),即stack
pointer,指向当前栈的顶端,汇编语言中的栈并非其他语言中的一种数组型的数据结构,而直接简化为一段内存,通过pop和push等指令来进行直接的内存操作。
5.堆和栈有相似,即皆是一段普通内存,不同点是,堆是顺序存放,且堆只能由程序员申请让系统分配,而栈是程序员自行分配。
6.8086汇编一般无堆,win32汇编中可使用API函数来操作堆。
2.堆和栈本来是两种数据结构,现常用“堆栈”连用仅表示栈。
3.栈的使用方式是临时存放数据,在某一段内存中,从内存地址最后开始存放,像叠盘子一样,只能将最后放入的数据先取出来。
4.栈在汇编语言中经常使用,cpu寄存器中有sp(32位为esp),即stack
pointer,指向当前栈的顶端,汇编语言中的栈并非其他语言中的一种数组型的数据结构,而直接简化为一段内存,通过pop和push等指令来进行直接的内存操作。
5.堆和栈有相似,即皆是一段普通内存,不同点是,堆是顺序存放,且堆只能由程序员申请让系统分配,而栈是程序员自行分配。
6.8086汇编一般无堆,win32汇编中可使用API函数来操作堆。
展开全部
栈机制是用来暂存数据的,因为数据不可能都保存在寄存器里面。额,我不知道你对汇编了解不,先来一段代码:
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
上面是一个循环
栈机制是一个很灵活的技术,一定要灵活地掌握,但是我不了解你的情况,也许你需要把问题描述一次
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
上面是一个循环
栈机制是一个很灵活的技术,一定要灵活地掌握,但是我不了解你的情况,也许你需要把问题描述一次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询