在程式設計時為什麼還要對SP重新賦值

2021-03-03 21:44:17 字數 2046 閱讀 8427

1樓:匿名使用者

sp是指堆疊起始指標。

系統堆疊是在記憶體中。

對堆疊指標賦值,常見於微控制器的嵌入式程式設計中。

由於微控制器的內部資源非常少,有的微控制器的ram空間只有2k,在這麼少的空間中執行程式,需要仔細地設計每個變數,使得佔用的ram最少。

給sp賦值,主要是為了能夠讓使用者來決定ram中堆疊和使用者資料的比例關係,以保證系統可靠穩定的執行。

堆疊指標(sp)的作用是什麼?在程式設計時,為什麼還要對 sp重新賦值?

2樓:匿名使用者

堆疊指標的作用就是指向棧頂元素的,通過它還可以對棧頂元素進行出棧操作

當堆疊中的元素進行出棧或入棧操作時,都會使棧頂元素髮生變化,堆疊指標sp就需要重新賦值,讓其指向新的棧頂元素

3樓:匿名使用者

堆疊是一種執行「後進先出」演算法的資料結構。 設想有一個直徑不大、一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。

現在把不同編號的小球放到竹筒裡面,可以發現一種規律:先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。所以「先進後出」就是這種結構的特點。

堆疊就是這樣一種資料結構。它是在記憶體中開闢一個儲存區域,資料一個一個順序地存入(也就是「壓入——push」)這個區域之中。有一個地址指標總指向最後一個壓入堆疊的資料所在的資料單元,存放這個地址指標的暫存器就叫做堆疊指示器。

開始放入資料的單元叫做「棧底」。資料一個一個地存入,這個過程叫做「壓棧」。在壓棧的過程中,每有一個資料壓入堆疊,就放在和前一個單元相連的後面一個單元中,堆疊指示器中的地址自動加1。

讀取這些資料時,按照堆疊指示器中的地址讀取資料,堆疊指示器中的地址數自動減 1。這個過程叫做「彈出pop」。如此就實現了後進先出的原則。

堆疊是計算機中最常用的一種資料結構,比如函式的呼叫在計算機中是用堆疊實現的。 堆疊可以用陣列儲存,也可以用以後會介紹的連結串列儲存。 下面是一個堆疊的結構體定義,包括一個棧頂指標,一個資料項陣列。

棧頂指標最開始指向-1,然後存入資料時,棧頂指標加1,取出資料後,棧頂指標減1。 #define max_size 100 typedef int data_type; struct stack ;

微控制器在設計程式時,有時為什麼要對sp賦值?

4樓:匿名使用者

設定sp值是為了,定棧頂元素sp本來的地址為81h,81h內儲存的值就是棧頂元素,控制sp的指令主要有push和pop。至於為什麼要賦值,就要看具體的才知道了...

5樓:匿名使用者

sp定棧頂元素,微控制器復位後初始值是07h,把資料壓棧,則從08h(第二組工作暫存器的r0)開始,如果考慮不周全易出錯。

為什麼在程式初始化時要對sp重新賦值

6樓:匿名使用者

因為初始化的時候,堆疊設定的(sp)值比較小,sp=7,如果你定義的資料存放的地址也比較小的話,就有可能被覆蓋,容易是程式出錯這個就好比你新買一個筆記本,有點時候你往往會空出前面一兩頁,再開始寫因為前面你可能以後會記錄一些人的**或者名言之類的

7樓:手機使用者

因為如果不重新賦值的話,程式中使用sp可能會指向另外的stack

為什麼對堆疊指標sp重新賦值

8樓:才素花千賦

堆疊指標的作用就是指向棧頂元素的,通過它還可以對棧頂元素進行出棧操作

當堆疊中的元素進行出棧或入棧操作時,都會使棧頂元素髮生變化,堆疊指標sp就需要重新賦值,讓其指向新的棧頂元素

9樓:

在51微控制器中,sp棧指標是一個專用的8位暫存器,系統復位後,sp初始化為07h,使得堆疊指標實際上是由08h單元開始。

在響應中斷或子程式呼叫時,發生入棧操作,入棧的是16位pc值;51中有push壓入和pop彈出棧操作指令,如有必要,在中斷或呼叫子程式時可用posu指令把psw或其它需要保護的暫存器的內容壓入堆疊加以保護;返回前再使用pop指令把它們恢復。

為什麼我們明明很傷心,還要對著別人強顏歡笑

因為我們不想讓他們知道我們內心是脆弱的。不願意對別人敞開心扉 因為要面子,不想在別人面前哪怕露出一點缺點 因為我們長大了,害怕了 讓他感到自己沒有什麼大不了的 因為不想讓別人看到我們過的不好 為什麼明明很難過卻還要假裝快樂,強顏歡笑 也許你心裡有很多苦 輕易不讓人觸碰 也許你有千言萬語 總是自己默默...

網線製作時,綠白和藍白為什麼要對調

因為在數bai據傳輸時,我們用的是 du1 2 3 6根線 規定雙工方zhi 式下本地的1 dao2兩腳為版 訊號傳送端,權3 6兩腳為訊號接收端 也就是兩對線,它們按照一定的比率絞在一起,起到了遮蔽在資料傳輸中電子特性帶來的電磁干擾,原理是 兩條線 一對 受干擾的程度基本一樣,終端收到訊號後做減法...

為什麼我每回開機或重啟時都要對D盤進行檢查,而且對D盤進行磁碟碎片整理都不行

win7系統的話 1 右鍵計源算機 選擇管理 2 在桌面路徑依次選系統工具 任務計劃程式 任務計劃程式庫 microsoft diskdiagnostic 就是硬碟檢測 3 在中間的對話方塊應該有兩個計劃任務,就是帶時鐘標誌的,依次選擇 在右面的所選項中選擇禁用。1windows系統 現d盤檔案系統...