汇编语言中的栈,压栈,出栈是什么意思

2020-11-24 21:03:43 字数 4418 阅读 5290

1楼:匿名用户

就像一个装乒乓球的盒子,只有一个口能打开

里面一个球不放,就是空栈

往里面放一个球,就是压栈

从里边拿一个球,就是出栈

都放满了,就是满栈,再放就会溢出

2楼:匿名用户

栈就是分配的一些连续的内存空间 注意是连续的压栈就是把一个数据放到栈中的顶部,然后依次往上叠,就和叠一堆书一样出栈就是把栈顶部的数据拿出来,就像是把一叠书的最上面的一本拿出来一样

3楼:匿名用户

说的通俗点,就是一个数据的存储与读取。栈是个存储器,压栈就是往里面存数据,出栈就是取数据

汇编语言中什么是压栈出栈?

4楼:匿名用户

栈是一种线性数据结构,它遵循后进先出的顺序。有一个指针总指向栈顶。打个比方:

一个栈就相当于一个桶,入栈就是向里面装东西,先装的在下面后装的在上面,装一个指针就会加1,指向新装的东西,出栈就相当于取出东西,只有先取上面的,再取下面的,当取一个后指针就会减一,即指针始终指向桶里最上面那个东西。

5楼:匿名用户

可以理解成机枪的弹夹,弹夹就是一个栈,子弹一颗一颗压进去,就是压栈,有个顺序特点就是先进后出,后进先出,出栈就是子弹装号了一颗一颗打出来,栈的清理就是把弹夹清空,清掉弹夹里的子弹。堆栈就是把子弹放到弹夹里,堆在那里了,实际意思都差不多。

c语言里栈就可以用数组来做,把数据像子弹一样压数组里就是了。

6楼:匿名用户

压栈就是一个指令,遵循先进先出,后进后出原理,为了在产生中断时候,可以保存数据用的。

压栈 和 出栈 是什么意思啊`?

7楼:匿名用户

可以理解成机枪的弹夹,弹夹就是一个栈,子弹一颗一颗压进去,就是压栈,有个顺序特点就是先进后出,后进先出,出栈就是子弹装号了一颗一颗打出来,栈的清理就是把弹夹清空,清掉弹夹里的子弹。堆栈就是把子弹放到弹夹里,堆在那里了,实际意思都差不多。

c语言里栈就可以用数组来做,把数据像子弹一样压数组里就是了。

8楼:匿名用户

栈是存储的系统 压栈是写入数据 出栈是输出数据 先进后出 后进先出

9楼:匿名用户

压栈即进栈,用push表示,每压栈一次减2,出栈用pop表示,没出栈一次加2,

汇编语言中,出栈后 出栈的那个数值在栈中会被清零吗?

10楼:匿名用户

不会被清零。

汇编语言中,出栈是通过pop指令来实现的,首先看一下intel手册中对于pop指令的描述:

大致意思如下:pop指令从栈顶加载值到目标操作数指定的位置,然后增加栈顶指针。目标操作数可以是一个通用寄存器,内存位置或者段寄存器。

可以看到,手册中并没有提到出栈后pop要清空原有位置的值。因为这是不必要的,正常使用栈的话,出栈后那个位置的数值对栈没有影响,在栈增长后,那个位置可能会被新的值覆盖掉(即通过push压栈),所以没有必要清空它。而且,处理器和指令集设计的时候,必然会十分注重效率,不会做多余的事情,清不清零对栈的使用完全没有影响,所以设计师当然也不会让pop做这件事。

11楼:匿名用户

汇编语言中,出栈后 出栈的那个数值在栈中 不会 被清零,

但是 如果有 新的 压栈操作(入栈),会被新的数据替代。

12楼:匿名用户

不会被清零,但是这个数据正常情况下不会被访问到,除非特意去访问这个数据

13楼:匿名用户

出栈后 出栈的那个数值在栈中不会被清零 只是sp-1指向上一个栈地址了

14楼:匿名用户

不会清零。

popdst指令执行过程:

(dst)<-((sp)+1,(sp))(sp)<-(sp)+2

可见,栈中数据并无变化,只是sp指针+2。

15楼:匿名用户

不会清零。不信的话到原地址去看看原数变了没。

16楼:魔塔过客

出栈操作其实变的只是指针sp.....原数值仍旧保留

17楼:

不会,是原封不动的,所以说自动变量总是一个随机值,你每次声明一个自动变量,栈指针就会增加,新变量的值实际上是上一次使用该内存的变量值。。。

请问汇编语言的压栈,出栈的符号是什么?

18楼:草里马

push

pop这个问题其实没必要悬赏滴!!!

19楼:匿名用户

push进栈

pop出栈

汇编语言中入栈出栈问题 20

20楼:做而论道

我们申请一个空栈,然后把ax,b....

--你是怎么申请的呀?

-----------------

你既然,申请了一个空栈,

你就应该知道,栈底,在什么地方。

也就知道,栈底,的地址,存在什么地方。

那么你说说看,你把栈底的地址,存在什么地方了?

然后,你又把ax,bx 的内容,存在什么地方了?

这个事情,你要是不知道,那就奇怪了!

这就又回到原来的问题:--你是怎么申请的呀?

呵呵,你真能瞎琢磨。

21楼:匿名用户

pushax

pushbx

popbx<-pop是把栈里面的数,弹出到bxpoax<-

22楼:匿名用户

地址在ss:sp里.

汇编语言中压入堆栈是什么意思

23楼:匿名用户

就是把数据暂时存放到栈

中的意思.

例:push ax

push bx

等等,就是把ax,bx寄存器中的数据存入到栈中.

栈是一个暂时存储数据的内存空间,它具有"后进先出"的特性.

补充:栈的作用是很大的.比如,可以用来传递参数,用来暂时存放寄存器中的数据,让寄存器再去做别的事,在win32a**中,还是开辟局部变量的主要空间.

24楼:风卷

压入堆栈的作用很广泛,可以保护原先的指针

比如push ebp

move ebp,esp

25楼:匿名用户

打个比方:有一个瓶子,你先放里一块饼干,再放一块饼干,这就是堆栈,出栈就是把后放的那块饼干拿出来....具有"后进先出"的特性.

怎么理解汇编中sp寄存器的出栈压栈???

26楼:做而论道

类似于山洞探险,怎么进去,还要怎么出来。

脑子里面,就要记住走过的路。

退出时,后记忆的,应该先想起来。

程序,也是这样,子程序套子程序,子程序再套子程序,怎么才回到主程序?

就必须使用堆栈来保存历史信息。

27楼:匿名用户

使用call指令调用时需要压入偏移值(远调用还需要压入段寄存器),ret,retn指令返回时需要弹出栈中的偏移值,retf,iret,还需要弹出段。(要不然cpu哪晓得返回到**继续执行)

c语言利用栈创建栈帧,用于存放临时变量(比调用api向系统申请可用内存快多了)。

28楼:匿名用户

orange,一个操作系统的实现

30天自制操作系统

都有讲到。

出栈和压栈 应如何理解?

29楼:匿名用户

堆栈是ram中划出的一片特殊存储区,用于临时存放一些重要数据(这些数据存放一会后是必须回到原位的),其中数据的位置由堆栈指针确定,而数据的存放和读取则由入栈指令和出栈指令控制,入出必须对应成对的使用才能使压入的数据正确的回到压入前的位置。

比如:当前正在运行某程序,要调用一个子程序,而子程序中会用到a、b、c三单元,主程序中这三个单元中现有的信息在子程序运行结束后还要继续用的,那么就需要用堆栈临时保存这些数据,等子程序结束后再还原。入栈时是压入a、压入b、压入c,出栈则必须是出c、出b、出a。

这就好比子弹夹,先压进去的子弹在下,后压进去的在上,子弹进入枪膛(相当于出栈)则是相反,先上面后下面,正如一楼“一叠盘子”的比喻。这种用法的约定,是堆栈本身特性决定的,必须遵守。

30楼:匿名用户

栈是数据结构的概念。可以把栈比成一堆叠放的盘子,出栈就是取出最顶端的盘子,压栈就是把外面的盘子放到顶端。除此之外栈不能有其它操作。因此它和队列一样是受限的线性表。

在c语言里,参数的压栈和出栈分别是什么意思

1楼 匿名用户 压栈是进栈,把元素放到栈里面 出栈,把元素从栈中取出。 栈是先进后出。举个例子,一个装羽毛球的筒子,一边能开一边不能开,1号球先进去,到筒子底部 进栈 。然后2号球接着进去,在你不拿出2号球的情况下,你是无法拿走1号球。 而拿走球的操作就是出栈咯 2楼 匿名用户 压栈 就是进栈的意思...

c语言中的函数形参为void是什么意思

1楼 匿名用户 c语言中的void 基本上就是两个意思 无,没有 任意类型 这两个意思,与void出现的 位置和修饰变量相关 函数返回值位置,如 void func int i 表示func 函数没有返回值,void不可省 函数参数位置,如 void func void 表示func 函数即没有返回...

c语言中d是取模的意思?取模是什么意思

1楼 才是取模 相当于数学中的运算符 mod 取模是双操作符 格式是a b 意思就是 如果a对b取模 就是求a b的余数 如3 2结果就是1 没有d 只有 d 是整数格式化输出 来得及 初三学不晚啊 高中还有信息学竞赛呢 2楼 萍水e相逢 请 给出 完整的 句子 别断章取义! 什么是c语言里面的取模...