系統(tǒng)版本:EMUI 11.0
堆棧都是一種數(shù)據(jù)項(xiàng)按序排列的數(shù)據(jù)結(jié)構(gòu),只能在一端【稱為棧頂(top)】對(duì)數(shù)據(jù)項(xiàng)進(jìn)行插入和刪除;在單片機(jī)應(yīng)用中,堆棧是個(gè)特殊的存儲(chǔ)區(qū),主要功能是暫時(shí)存放數(shù)據(jù)和地址,通常用來(lái)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)。
堆棧是一個(gè)特定的存儲(chǔ)區(qū)或寄存器,它的一端是固定的,另一端是浮動(dòng)的 。堆這個(gè)存儲(chǔ)區(qū)存入的數(shù)據(jù),是一種特殊的數(shù)據(jù)結(jié)構(gòu)。所有的數(shù)據(jù)存入或取出,只能在浮動(dòng)的一端(稱棧頂)進(jìn)行,嚴(yán)格按照“先進(jìn)后出”的原則存取,位于其中間的元素,必須在其棧上部(后進(jìn)棧者)諸元素逐個(gè)移出后才能取出。在內(nèi)存儲(chǔ)器(隨機(jī)存儲(chǔ)器)中開(kāi)辟一個(gè)區(qū)域作為堆棧,叫軟件堆棧;用寄存器構(gòu)成的堆棧,叫硬件堆棧。
單片機(jī)應(yīng)用中,堆棧是個(gè)特殊存儲(chǔ)區(qū),堆棧屬于RAM空間的一部分,堆棧用于函數(shù)調(diào)用、中斷切換時(shí)保存和恢復(fù)現(xiàn)場(chǎng)數(shù)據(jù)。堆棧中的物體具有一個(gè)特性:第一個(gè)放入堆棧中的物體總是被最后拿出來(lái), 這個(gè)特性通常稱為先進(jìn)后出 (FILO—First-In/Last-Out)。 堆棧中定義了一些操作, 兩個(gè)最重要的是PUSH和POP。 PUSH(入棧)操作:堆棧指針(SP)加1,然后在堆棧的頂部加入一 個(gè)元素。POP(出棧)操作相反,出棧則先將SP所指示的內(nèi)部ram單元中內(nèi)容送入直接地址尋址的單元中(目的位置),然后再將堆棧指針(SP)減1。這兩種操作實(shí)現(xiàn)了數(shù)據(jù)項(xiàng)的插入和刪除。
(圖片來(lái)源于互聯(lián)網(wǎng))