組合語言 學習記錄03
阿新 • • 發佈:2022-04-07
3.8 棧頂超界的問題
8086cpu不保證我們的操作不會導致超界問題;
所以在程式設計時需要考慮棧頂超界的問題,無論是入棧亦或是出棧都要注意。
3.9 push、pop指令
指令格式可以為:
1 push 暫存器、段暫存器、記憶體單元(都是以字為單位) 2 pop 暫存器、段暫存器、記憶體單元(都是以字為單位) 3 //例如 4 mov ax 1000H 5 mov ds,ax 6 push [0] 7 pop [2]
顯而易見的問題:一個棧段最大可以設定為多少?
因為我們在進行push和pop操作時,更改的值為SP=SP+2,SS的值保持不變,所以最大為0~FFFFH,容納64KB的內容。
對於資料段,段地址存放在DS中,用mov、add、sub等訪問記憶體單元的指令時,CPU將其當作資料來訪問。
對於程式碼段,段地址存放在CS中,第一條指令的偏移地址放在IP中,CPU將執行程式碼段中的指令。
對於棧段,段地址存放在SS中,棧頂單元的偏移地址存放在SP中,CPU在執行push、pop指令時將這一棧段當作棧空間來進行使用。