汇编里的PUSH功能是压栈但为什么要压栈的呢?

汇编里的PUSH功能是压栈但为什么要压栈的呢?这个很搞不懂!初学汇编,希望哪位朋友帮忙解释一下下!谢谢

计算机程序用来放数据的地方有两种,一个是堆,一个是栈。栈一般用来放一些函数的临时变量,还有中断和调用函数时的返回地址。因为这些地址都是临时的,所以在栈的出栈和进栈的时候可以动态的进入和删除。调用函数和中断的时候,临时变量和返回地址就暂存在栈中。函数调用完了,临时变量和返回地址就从栈删除了。所以栈一般来说是临时变量,调用函数会自动回收内存。这就是PUSH 和 POP 的功能了。相当于一个暂时保存数据的地方。 而堆的话一般用来动态分配内存,分配的内存一般不会自动释放。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-17
计算机在运算的时候大部分情况会把数据放到寄存器里运算,而调用函数的时候,会有新的数值要使用这些寄存器,所以要把这些寄存器里的内容保存起来,就是保护现场。因为栈的先入后出非常适合这一操作,所以每次函数调用前都有入栈操作,函数返回是出栈还原现场

汇编里的PUSH功能是压栈但为什么要压栈的呢?
因为这些地址都是临时的,所以在栈的出栈和进栈的时候可以动态的进入和删除。调用函数和中断的时候,临时变量和返回地址就暂存在栈中。函数调用完了,临时变量和返回地址就从栈删除了。所以栈一般来说是临时变量,调用函数会自动回收内存。这就是PUSH 和 POP 的功能了。相当于一个暂时保存数据的地方。 ...

汇编里的PUSH压栈使用他是为了进行什么步骤而使用的呢?
因为CPU里的寄存器只有4个,eax,ebx,ecx,edx,所以你在编写程序的时候,可能这4个寄存器里都存储有数据了,但是你还需要再用寄存器来存储数据,这时,4个寄存器就明显的不够用了,那么怎么办呢,当然,我们可以将原寄存器中的内容压栈,然后这时寄存器中的数据就存到了内存中的栈段内,寄存器就空出来了...

汇编里的PUSH压栈使用他是为了进行什么步骤而使用的呢?
不丢失数据进行压入(PUSH)栈保护,出栈(POP)恢复原数据。例如共用累加器A,进栈前压入保护,累加器可在进行运算,出栈恢复原累加器中的数值。结果不会影响原数值。

汇编里的PUSH压栈使用他是为了进行什么步骤而使用的呢?
你不要想的太复杂,其实它很简单的,你只要知道它有什么用就行了,CPU中寄存器的数量是有限的,但是每个程序都不能不用寄存器,所以当一个程序调用另一个程序时就要保存当前寄存器的内容,叫压栈,等被调用的程序运行完了再出栈.

汇编里的"PUSH"和"POP"起了什么功能,,谁能用通俗点的话告诉我吗???
堆栈是一端固定,另一端变化的特殊存储空间,你可以把它想像成装固体的桶,桶底(栈底)固定,桶里面所装固体的最高处定义为桶顶(栈顶)。如果什么都没有装时,桶顶和桶底相等,当装一层沙子后,桶顶升高(即栈顶地址-2,相当于入栈PUSH),再装一层水泥,桶顶再次升高,(即栈顶地址又-2...

汇编(关于PUSH的SP问题)
PUSH AX 同理SP=SP-2,此时SP=00FCH 物理地址=SS*10H+SP=3000H*10H+00FCH=300FCH CALL L1 调用子程序即过程调用,为了保护现场,会压栈保存断点,段内调用,说明L1的属性为NEAR,只需保存IP,SP=SP-2,但是如果是段间调用则需要保存CS和IP 那么SP=SP-4.不管怎么样,在执行完RET后,要恢复...

汇编语言中,PUSH和POP对CS:IP有什么影响?
PUSH和POP指令一般用在调用子程序之前用来保护现场,以便返回时返回到正确的代码处。在中断时,系统也默认的会将一些寄存器的值压入堆栈。PUSH指令,将IP压栈,用于保存断点,SP先减2指向栈顶,再将IP(16位地址,即一个字)低八位存进低地址((SP)=IP低八位)),高八位存进高地址(SP+1)=IP...

汇编语言中的PUSH的用法?
PUSH的操作过程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定的操作数送入新的栈顶位置。用法示例:push ax ;将AX寄存器的值压入栈顶push 1 ;将数值1压入栈顶 本回答被网友采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 1条折叠回答 其他...

请问各位大神 这个程序中的 PUSH AX 什么意思
push是压栈的意思,这里是主函数调用子函数之前要把主函数里的寄存器先保存起来,否则子程序用到AX将会被覆盖,因此在子程序结束时,再把AXpop出来还原给主函数。

汇编语言的程序开始都有 PUSH DS MOV AX,0 PUSH AX 这三段有什么作用...
在程序的开始,在堆栈中压入了两次,分别是DS和0;在程序的末尾,使用了RET,就用到了压入的内容,这样就能结束程序,安全的返回DOS。想要弄清这几个操作,就必须了解“磁盘操作系统”,即DOS才行。这已经不是“汇编语言”的内容了。

相似回答