堆棧

九曲迷宮,也不過是修在地面上的牆

堆棧究竟是什麼?
堆棧是一個特定的存儲區,訪問該存儲區一般需要按照專門的規則進行操作。
堆棧是幹嘛的?
1、暫存數據
2、在過程調用或處理中斷時保存斷點信息。
堆棧的分類?
堆棧一般分爲”專用堆棧存儲器“和“軟件堆棧”
1、專用堆棧存儲器:就是專門設計的硬件存儲器
2、軟件堆棧:程序員在內存中劃一塊出來,當做堆棧使用(8088、8086)
堆棧的結構
8086、8088中,堆棧是由堆棧段寄存器SS指示的一段存儲區。
這裏寫圖片描述
1、堆棧的一端是固定的,稱爲棧底。棧底是堆棧存儲區的最大地址單元。
2、堆棧另一端是浮動的,稱爲棧頂。在任何時刻,棧頂是最後存入信息的存儲單元。棧頂是隨着堆棧中存放信息的多少而改變。
3、通常設置一個寄存器來指示棧頂位置。其內容就象一個指針一樣,因此被稱爲堆棧指針SP(Stack Pointer)。
4、在堆棧中存取數據的規則是:“先進後出FILO”

數據在堆棧中以字爲單位存放,低8位放在較低地址單元,高8位放在較高地址單元。

SP被初始化時指向棧底+2單元,其值就是堆棧的長度。由於SP是16位寄存器,因此堆棧長度 64K字節。

SP始終表示堆棧段基址與棧頂之間的距離(字節數)。
當SP爲最大(初始)值時,表示堆棧爲空。
當SP爲0時,表示堆棧全滿。

當用戶程序中要求的堆棧長度超過一個堆棧段的最大長度64KB時,可以設置多個堆棧段。

什麼叫“以字爲單位”呢?
1、任何兩個相鄰字節單元就構成一個字單元(一字節8位,一個字就是16位!)
2、字單元的地址 爲兩個字節單元中較小地址字節單元的地址。
3、字數據的存放規則是:低8位放在較低地址字節單元中,高8位放在較高地址字節單元中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章