汇编:栈
? 棧是一段連續的內存單元,也就是一段連續的內存地址。
?需要特殊的訪問形式--才能訪問棧。
?
? 棧的模型就像一個箱子,通過"入棧","出棧"操作棧這個箱子, 這個箱子還有一個標記"棧頂",永遠指向棧的頂部。
?
?從內存角度看:?
? 入棧: push, ?將16位寄存器或者內存中的字型數據 ----->棧頂標記的上面。
? 出棧: pop ? ? 將棧頂標記所標識的字型數據 -----> 16位寄存器或內存中。
?
在8086cpu中,在任意時刻,將段地址寄存器ss和偏移地址寄存器sp所組合出來的內存地址當做棧頂標記。
? push ax ? # 修改sp寄存器中的數值, ?SP?= SP?- 2
? ? ? ? ? ? ? ? ? ? ?將ax中的字型數據 -----> SS:SP所組合出來的內存地址中, ?入棧
?
? pop bx ?# SS:SP所組合出來的內存地址中的字形數據 ----> ?bx
? ? ? ? ? ? ? ? ? 修改棧頂標記, SP = SP + 2 ? ? 出棧
?
改變ss,sp寄存器的內容
棧的越界
? ? ? 當sp為0了,然后接著執行push操作, ss的值并不會改變,而sp從0000變成FFFE,再執行push, sp就又減2個字節,變成FFFC...sp的變化范圍就是0000-FFFF,也就是 2^16個字節,即64kb.
?
棧的作用:
? ?1. 棧可以臨時性保存數據。 2. 可以交換數據。
? ? ?交換寄存器中的數據
交換兩個內存中的數據
總結
- 上一篇: 汇编(8086cpu): 字节数据(by
- 下一篇: 汇编:内存段的安全