您的位置:網(wǎng)站首頁 > 電器維修資料網(wǎng) > 正文 >
什么是單片機堆棧
★★★★★【文章導(dǎo)讀】:什么是單片機堆棧具體內(nèi)容是:堆棧是一個區(qū)域,是用來存放數(shù)據(jù)的,這個區(qū)域本身沒有任何特殊之處,就是內(nèi)部RAM的一部分。特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的“先進后出,后進先出”,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即“PU…
來源: 日期:2013-12-17 21:35:29 人氣:標(biāo)簽:
堆棧是一個區(qū)域,是用來存放數(shù)據(jù)的,這個區(qū)域本身沒有任何特殊之處,就是內(nèi)部RAM的一部分。特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的“先進后出,后進先出”,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即“PUSH”和“POP”,有一個特殊的專為其服務(wù)的單元,即堆棧指針SP,每當(dāng)執(zhí)行一次PUSH指令時,SP就(在原來值的基礎(chǔ)上)自動加1,每當(dāng)執(zhí)行一次POP指令,SP就(在原來值的基礎(chǔ)上)自動減10由于SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設(shè)置在規(guī)定的內(nèi)存單元中,如在程序開始時,用一條MOVSP.#5FH指令,就是把堆棧設(shè)置在從內(nèi)存單元60H開始的單元中。一般程序的開頭總有這么一條設(shè)置堆棧指針的指令,因為開機時,SP的初始值為07H,這樣就使堆棧從08H單元開始往后,而08H到1FH這個區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會造成數(shù)據(jù)的混亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習(xí)慣問題。當(dāng)設(shè)置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內(nèi)存,它還可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不會把它當(dāng)成普通內(nèi)存用了。
【看看這篇文章在百度的收錄情況】
相關(guān)文章
- 上一篇: 單片機程序的執(zhí)行過程
- 下一篇: 單片機的開發(fā)過程