堆棧都是一種數據項按序排列的數據結構,只能在一端【稱為棧頂(top)】對數據項進行插入和刪除;在單片機應用中,堆棧是個特殊的存儲區(qū),主要功能是暫時存放數據和地址,通常用來保護斷點和現(xiàn)場。
本文操作環(huán)境:Windows7系統(tǒng),Dell G3電腦。
堆棧是一個特定的存儲區(qū)或寄存器,它的一端是固定的,另一端是浮動的 [1] 。堆這個存儲區(qū)存入的數據,是一種特殊的數據結構。所有的數據存入或取出,只能在浮動的一端(稱棧頂)進行,嚴格按照“先進后出”的原則存取,位于其中間的元素,必須在其棧上部(后進棧者)諸元素逐個移出后才能取出。在內存儲器(隨機存儲器)中開辟一個區(qū)域作為堆棧,叫軟件堆棧;用寄存器構成的堆棧,叫硬件堆棧。
單片機應用中,堆棧是個特殊存儲區(qū),堆棧屬于RAM空間的一部分,堆棧用于函數調用、中斷切換時保存和恢復現(xiàn)場數據。堆棧中的物體具有一個特性:第一個放入堆棧中的物體總是被最后拿出來, 這個特性通常稱為先進后出 (FILO—First-In/Last-Out)。 堆棧中定義了一些操作, 兩個最重要的是PUSH和POP。 PUSH(入棧)操作:堆棧指針(SP)加1,然后在堆棧的頂部加入一 個元素。POP(出棧)操作相反,出棧則先將SP所指示的內部ram單元中內容送入直接地址尋址的單元中(目的位置),然后再將堆棧指針(SP)減1。這兩種操作實現(xiàn)了數據項的插入和刪除。
想了解