汇编指令。PUSH(入栈指令) 这是神马意思? 什么是入栈 简单的解释一下
不同MCU的堆栈在使用细节上有所区别,不过意思都差不多,暂时以X86为例。
X86堆栈就是一段程序初始化时指定的内存空间,用来暂存需要保存的数据。这个空间访问时要涉及两个指针寄存器。一个是基点(SS),其值不变,永远指向堆栈段的最小地址;另一个寄存器(SP)的值为堆栈空间的剩余大小,两者相加就是当前生效的堆栈地址。SP在遇到PUSH时减少,在遇到POP时增加,其指向的地址在堆栈区域内不断变化;当SP的值为0时就表示堆栈用光了。
入栈(PUSH)就是将一个数据存入SP指向的当前堆栈地址,然后SP指向堆栈内的下一个存储空间;出栈(POP)就是让SP返回前一个存储空间,然后读出这个地址内存储的数据。
堆栈的优势就是暂存数据时不用管到底存在哪了,只要按照后进先出的原则就可以保证恢复数据;缺点就是不能通过堆栈操作跳着访问栈内数据。
入栈(PUSH)就是将一个数据存入当前ss:sp指向的地址,然后SP-2;出栈(POP)就是让SP+2,然后读出这个地址内存储的数据。
入栈,把push后跟着数据内容存入堆栈中暂时保存,以备后用。要用时pop指令取出来,就是出栈。
入栈就是走进一家客栈,这个客栈很奇怪,最先进去的最后出来.
就是把数据放入堆栈内!
汇编指令中入栈指令PUSH 入栈指令P32 中的p32是什么意思?
32位机的指令吧 不同的机器汇编指令是不同的 push只能操作ax ,bx这种16位的寄存器或内存单元
并不是这样,和你理解的恰恰相反
,
将寄存器的值进行压栈是为了保护在寄存器中的值。比方说
程序
在计算所得结果分别放在寄存器A和B中,这时程序调用
子程序
,子程序在编写过程中用到了A和B两个寄存器,如果直接调用子程序那么A和B中原有的计算值会被覆盖同时影响了程序和子程序的运算结果,这时需要
一个地方
用来保存原程序的结果就用到了栈