2014-10-11 155 views
0

你好傢伙我有一個快速的問題,但我還沒有無法回答。我很感激這一些幫助:彙編堆棧指針AVR

LDI R31, 0 

我不太清楚這是什麼一樣,但是在這之前我加載堆棧指針HIGH等於$ 08和低等於$ 5F(我知道這是RAMEND定義爲我的Arduino的內存結束)。有人可以解釋一下這會對堆棧/堆棧指針做什麼嗎?我知道R31被用作高字節,但我不確定這會對我當前的一堆值產生什麼影響。

這是我家庭作業中的一小部分,但我確實認爲理解這一點非常重要。 謝謝!

回答

2

R31是Z寄存器的一部分,它是R31:R30的別名。 X,Y和Z寄存器被一些彙編指令用於間接尋址。請參閱AVR instruction Set.LDI R31, 0將寄存器31設置爲0.它對堆棧或堆棧指針沒有影響。

看起來您正在查看一些彙編代碼,特別是在程序開始附近。通常,這是C運行時初始化堆棧指針和RAM等的地方。程序中用源代碼初始化的變量將其初始值從程序代碼結尾附近的數據部分複製到RAM中,變量實際駐留在RAM中。 Z寄存器對此很有用,因爲它可以很容易地循環播放節目數據。