堆疊段指標(暫存器SS)是用於確定堆疊在記憶體中的起始位置的暫存器;堆疊段暫存器的作用和其他段暫存器(CS,DS,ES)相同,都是為了在一整段的記憶體中劃分區域:由於記憶體為一整段儲存單元,CS(程式碼段暫存器)中存放程式碼段的起始位置,DS(資料段暫存器)中存放資料段的起始位置,SS(堆疊段暫存器)中存放堆疊段的起始位置,ES(附加段暫存器)中存放附加段的起始位置。 在作業系統架構的記憶體中,堆疊位於程式所使用記憶體的頂端,向記憶體低地址處擴充套件,DS暫存器中存放的是堆疊最低的地址。堆疊本身為記憶體的一部分,但是相對普通記憶體段(DS)的區別在於:普通記憶體段(DS)一般用於存放長久資料,無特殊儲存順序;堆疊記憶體段(SS)一般用於存放暫時資料(例如呼叫函式是的引數),可以使用PUSH,POP指令向棧頂壓入,彈出資料。 另外,若SP(棧頂暫存器)中的值小於DS暫存器(PUSH指令執行過多次)將會引發錯誤:系統顯示某某程式StackOverflow(因為SS段往下的記憶體地址屬於資料段的區域)。若SP中的值大於一定程度(由程式的堆疊段大小決定)(POP指令執行過多),也將會引發錯誤:系統顯示某某程式AccessViolationReadingAddress(因為程式記憶體的頂端上有著其他資料)。 需要注意的是,在較新的作業系統下彙編其平臺下的程式時,程式設計師將無法修改段暫存器中的值(修改會報錯),它們由作業系統自身管理(可以理解為由作業系統編寫者的程式碼管理),其原因是出於安全起見。
堆疊段指標(暫存器SS)是用於確定堆疊在記憶體中的起始位置的暫存器;堆疊段暫存器的作用和其他段暫存器(CS,DS,ES)相同,都是為了在一整段的記憶體中劃分區域:由於記憶體為一整段儲存單元,CS(程式碼段暫存器)中存放程式碼段的起始位置,DS(資料段暫存器)中存放資料段的起始位置,SS(堆疊段暫存器)中存放堆疊段的起始位置,ES(附加段暫存器)中存放附加段的起始位置。 在作業系統架構的記憶體中,堆疊位於程式所使用記憶體的頂端,向記憶體低地址處擴充套件,DS暫存器中存放的是堆疊最低的地址。堆疊本身為記憶體的一部分,但是相對普通記憶體段(DS)的區別在於:普通記憶體段(DS)一般用於存放長久資料,無特殊儲存順序;堆疊記憶體段(SS)一般用於存放暫時資料(例如呼叫函式是的引數),可以使用PUSH,POP指令向棧頂壓入,彈出資料。 另外,若SP(棧頂暫存器)中的值小於DS暫存器(PUSH指令執行過多次)將會引發錯誤:系統顯示某某程式StackOverflow(因為SS段往下的記憶體地址屬於資料段的區域)。若SP中的值大於一定程度(由程式的堆疊段大小決定)(POP指令執行過多),也將會引發錯誤:系統顯示某某程式AccessViolationReadingAddress(因為程式記憶體的頂端上有著其他資料)。 需要注意的是,在較新的作業系統下彙編其平臺下的程式時,程式設計師將無法修改段暫存器中的值(修改會報錯),它們由作業系統自身管理(可以理解為由作業系統編寫者的程式碼管理),其原因是出於安全起見。