記憶體中使用一段連續單元,看作成只有乙個乙個上口的盒子,用於存放資料
入棧:向盒子裡放入資料
出棧:從盒子裡拿出資料
單位;以字(2個位元組/16位)為單位。
規則:先進後出,後進先出
入棧
push 通用暫存器(ax,bx,cx,dx)
該操作會將暫存器中的資料存放到棧頂位址(ss:sp對應的位址)中
出棧pop 通用暫存器(ax,bx,cx,dx)
該操作會將棧頂位址(ss:sp對應的位址)中的資料取出,放到暫存器中
當棧滿時(每次進棧後,sp減2,當sp指向0000h的時候,即棧滿,下同),
再次進棧操作將使sp環繞,即sp將指向fffeh繼續進行進棧操作。(下同)。
當棧空時,再次出棧操作將使sp環繞
cli 中斷標記(if)置零
棧段、資料段與**段都是記憶體中的一段資料,所以在進行彙編時,需要注意這三個段是否相互覆蓋。
ARM彙編之棧
建立程序的時候,會分配記憶體作為棧。實際棧指令 push,pop 是其他指令的別名,實際指令是str ldr或者其延伸指令。例s b sp,push 棧實現的幾種情況 堆疊型別 store load 完全下降 高位址在上,低位址在下 stmfd s b ldmfd ldm 完全公升序 高位址在下,低...
ARM彙編程式設計基礎之四 ARM彙編偽操作
掌握了基本的arm彙編指令後,要寫出簡單的arm匯程式設計序,還必須要掌握基本的arm彙編偽操作 directive 現在我們來看乙個簡單的匯程式設計序,該程式呼叫子程式完成了加法操作。1 檔名 test.s 2 功能 實現兩個暫存器相加 3 area example,code,readonly 宣...
ARM彙編程式設計基礎之四 ARM彙編偽操作
掌握了基本的arm彙編指令後,要寫出簡單的arm匯程式設計序,還必須要掌握基本的arm彙編偽操作 directive 現在我們來看乙個簡單的匯程式設計序,該程式呼叫子程式完成了加法操作。1 檔名 test.s 2 功能 實現兩個暫存器相加 3 area example,code,readonly 宣...