堆栈到底是什么意思,这个功能是干什么的,怎么用,举个例子.正在学汇编语言,这部分看不懂

 我来答
阳光部落阿强
2011-04-02 · TA获得超过424个赞
知道小有建树答主
回答量:716
采纳率:0%
帮助的人:293万
展开全部
坐过公交车吧,公交车是前门上后面下,公交车就是堆栈,人就是数据。比如你要叫某人从A站到B站去干什么,你得先叫他上车,等到B站到了,他再下车,汇编里面是一样的,一个数据你可以存放在堆栈里面,等到你要用的时候从堆栈里面取出来,数据在堆栈里面是受保护的,程序运行过程中不会被改变,像PUSH ACC就是要保护 A里面的数据,可能这时候出现某个中断,或者子程序需要A要去执行其他的程序,但是我们不希望A里面的数据因为执行其他任务而糟糕改变,所以先存在堆栈里面,等到这个任务执行完了,从堆栈里面把上次A的数据再调出来用。
AJISky
2011-04-02 · TA获得超过1122个赞
知道小有建树答主
回答量:457
采纳率:100%
帮助的人:247万
展开全部
堆栈就是一个特殊内存区域,
用来存放数据
可以用指令PUSH ,POP 操作
主要是用来存放临时数据,比如局部变量,某个函数过程中定义的变量
堆栈是先进后出方式
比如说有个过程求和
int fun(int a,int b)
{
return a+b;
}
void main()
{
int z;
z=fun(5,6)
printf("%d",z)
}
调用fun过程时操作系统会使用堆栈来传递参数,
首先PUSH 5
PUSH 6
CALL FUN
又或者在调用过程前将各个寄存器先保存起来因为数量有限在本过程中可能用到同样的寄存器被覆盖原来的值
main
mov ax,6
mov bx,7
call proc
...

proc1 proc
push ax ;先入
push bx
子过程程序中用到AX,BX
pop bx
pop ax ;后出
ret
proc1 endp
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goodczs
2011-04-01 · TA获得超过2118个赞
知道小有建树答主
回答量:2251
采纳率:0%
帮助的人:945万
展开全部
没什么特别的意思,就是指你电脑上的硬盘空间。至于说堆和栈就是一种数据结构,就是在硬盘上存东西的方法不一样,堆存的时候就是数据放进去了,取的时候先放的先出来。栈存的时候就是先放进去的后出来。就这么个意思了。
追问
麻烦举个例子把 把ax的内容压倒堆栈中,可是sp根本没有变化,什么用也没有
追答
怎么可能没变化呢???
你在debug下试下。
mov ax,12
push ax
执行前后sp的值是不一样的,执行后明显的少了一个字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
developerqah
2011-04-01
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
堆栈是在RAM空间,主要目的是1. 为了存储局部变量; 2.函数调用返回
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿勺巴f
2011-04-01
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
保护数据!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式