1樓:網友
堆疊的定義是這樣的:
dssg segment stack
aa dw 512dup(?)
dssg ends
一般的說,當push/pop指令不頻繁時用系統堆疊就可以了,但是當需要堆疊儲存大量資料,如作為子程式傳替引數時就要定義乙個堆疊,而且一般來說乙個段的內容不能超過64k,因為偏移位址最大隻能表示64k,所以定義的堆疊也不能是無限大,如果超過了64k,就定義兩個吧!
堆疊在彙編中對於初學者用的很少,一般小程式都不需要用的!用起來也不是很難,就是注意下,在子程式呼叫時,什麼時候是返回位址,什麼時候是暫存器值!總之,記住先進後出,再做題時畫個堆疊圖,應該不會很難的!
組合語言中設定的堆疊段到底有何作用,怎樣的情況下需要設定這個堆疊段?
2樓:湯旺河邊
堆疊段主要用於暫時儲存一些資料,不可或缺。
作業系統在把應用程式裝入記憶體時,預設分配堆疊段與**段同段,應用程式可以自行設定自己的堆疊段。自行設定的堆疊段大小最小4個位元組,用於從應用程式返回作業系統,幾乎所有的初學者不知道這個預設的、不成文的規定。
只有較大的程式或遞迴呼叫較深的程式,才有必要設定獨立的堆疊段;我們平時編的一些程式都不大,系統預設的堆疊空間足夠使用,完全沒有必要單獨設定堆疊段,我在知道里問題所編的組合語言程式,從不設定獨立的堆疊段。
51微控制器如何設定堆疊的大小。。
3樓:網友
是的,51微控制器的可用記憶體只有00h~7fh,堆疊指標設定在60h,則堆疊的大小就是60h~7fh。這算是有規定大小的!
4樓:修者世界
無法指定大小,但可以隱性的指定,比如普通51,你這條語句就限制了堆疊大小為31,即7fh-60h
但如果是52微控制器,這個堆疊大小就是ffh-60h了。
5樓:東吳小肥羊
51微控制器的可用記憶體只有00h~7fh,堆疊指標設定在60h,則堆疊的大小就是60h~7fh。這算是有規定大小的。
51微控制器是對所有相容intel 8031指令系統的微控制器的統稱。該系列微控制器的始祖是intel的8031微控制器,後來隨著flash rom技術的發展,8031微控制器取得了長足的進展,成為應用最廣泛的8位微控制器之一,其代表型號是atmel公司的at89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的相容機型推出,今後很長的一段時間內將佔有大量市場。
51微控制器是基礎入門的乙個微控制器,還是應用最廣泛的一種。需要注意的是52系列的微控制器一般不具備自程式設計能力。
6樓:網友
堆疊就是一直向上。只有基位址啊。
堆疊大小是多少,可否設定
7樓:敲卵扔
/stack選項設定堆疊的大小(以位元組為單位)。此選項僅在生成。exe檔案時使用。
reserve值指定虛擬記憶體中的總的堆疊分配。對於x86和x64計算機,預設堆疊大小為1mb。在itanium晶元組上,預設大小為取決於作業系統所作的解釋。
在windowsnt和windows2000中,它指定一次分配的實體記憶體量。提交的虛擬記憶體導致空間被保留在頁面檔案中。更高的commit值在應用程式需要堆疊空間時可節省時間,但會增加記憶體需求並有可能延長啟動時間。
對於x86和x64計算機,預設提交值為4kb。在itanium晶元組上,預設值為16kb。以十進位或c語言表示法指定reserve值和commit值。
組合語言中的堆疊段指標是幹什麼的
8樓:網友
堆疊段指標(暫存器ss)是用於確定堆疊在記憶體中的起始位置的暫存器;堆疊段暫存器的作用和其他段暫存器(cs,ds,es)相同,都是為了在一整段的記憶體中劃分割槽域:由於記憶體為一整段儲存單元,cs(**段暫存器)中存放**段的起始位置,ds(資料段暫存器)中存放資料段的起始位置,ss(堆疊段暫存器)中存放堆疊段的起始位置,es(附加段暫存器)中存放附加段的起始位置。
在作業系統架構的記憶體中,堆疊位於程式所使用記憶體的頂端,向記憶體低位址處擴充套件,ds暫存器中存放的是堆疊最低的位址。堆疊本身為記憶體的一部分,但是相對普通記憶體段(ds)的區別在於:普通記憶體段(ds)一般用於存放長久資料,無特殊儲存順序;堆疊記憶體段(ss)一般用於存放暫時資料(例如呼叫函式是的引數),可以使用push,pop指令向棧頂壓入,彈出資料。
另外,若sp(棧頂暫存器)中的值小於ds暫存器(push指令執行過多次)將會引發錯誤:系統顯示某某程式stack overflow(因為ss段往下的記憶體位址屬於資料段的區域)。若sp中的值大於一定程度(由程式的堆疊段大小決定)(pop指令執行過多),也將會引發錯誤:
系統顯示某某程式access violation reading address(因為程式記憶體的頂端上有著其他資料)。
需要注意的是,在較新的作業系統下彙編其平臺下的程式時,程式設計師將無法修改段暫存器中的值(修改會報錯),它們由作業系統自身管理(可以理解為由作業系統編寫者的**管理),其原因是出於安全起見。
9樓:網友
就象倉庫一樣,用來存放資料用的,只不過它是按先進後出原則組織起來的一段儲存空間而已。
10樓:網友
堆疊是用來儲存資料的,例如某個暫存器裡面的數值或位址。
堆疊可以理解成乙個倉庫,這個倉庫裡有很多格仔,每個格仔裡放乙個東西,每個格仔都有乙個編號。堆疊指標就是用來查詢格仔編號的,假設現在堆疊裡有10個格仔,編號依次是0,1,2,3,4,5,6,7,8,9,如果現在堆疊指標是5,那麼就對應5號格仔裡的內容(資料或位址)
11樓:網友
堆疊指標,用於堆疊運算。
入站和出站指標都要進行加減,保證資料的進出。
12樓:網友
16位彙編下堆疊段ss暫存器是表示乙個堆疊的基址,實際位址是(ss)*16+(sp)=實體地址,這個是當前對戰指標指向的實際位址。
13樓:網友
堆疊段是儲存資料的。
esp就是位址指標器。
push eax時,esp-4
pop eax時,esp+4
當然自己也可以執行入棧,出棧操作,儲存暫存器狀態等甚至可以當作資料段 使用,儲存臨時變數等。
14樓:網友
用於指向堆疊的棧頂,以方便管理堆疊。
嵌入式arm-linux中怎樣確定資料段、堆和棧的大小?
15樓:網友
貌似可以看看/proc/下面對應pid程序號西安的maps檔案。裡面有。
根據函式極限的定義證明 當X趨於無窮大時lim(sinX
因為正du玄函式是周期函式,自變數趨向zhi無窮大時極dao限不存在,這裡只 版能討論x趨向無窮小情況 lim sinx 根號 權x lim 根號 x sinx 根號 x 根號 x lim 根號 x sinx x lim根號 x lim根號 x 積的極限 極限的積 0x1 lim根號 x 根號 0 ...
如何根據孩子的年齡段投保兒童保險
家長給孩子購買兒童保險,要根據不同年齡進行投保比較好,具體如下 1 0 6歲兒童 此年齡階段的兒童因疾病發生理賠的比例比較高,理賠原因中,呼吸道的支氣管炎和肺炎佔比較高。因此,這個年齡段的孩子在購買保險時側重重疾和疾病住院保障。2 7至13歲兒童 此年齡階段的兒童孩子抵抗力會比幼兒園的孩子高一些,但...
如何根據自己的需要來選購裝飾牆紙
1 如何使房間看起來大一些 用白底的桌布 牆紙 選用冷色如綠 藍 淡紫的桌布 牆紙 小花 小圖案或是大格花但有很多白底的圖案。2 如何使房間顯得小一些 用黑底的桌布 牆紙 用暖色如紅 黃 橙色的桌布 牆紙 大花而深色底。3 如何使天花板顯得高些 用直條紋 或一種有向上支撐感覺的設計 天花板用淡色底的...