<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                棧是一種只能在一端進行插入或者刪除操作的數據結構(比如彈夾,最后壓入的子彈最先別射出) 現今的cpu都有棧的設計,以<span style="color:red">**字**</span>為單位 字通常分為若干個字節(每個字節一般是8bit)。 在存儲器中,通常每個單元存儲一個字。因此每個字都是可以尋址的。 字的長度用位數來表示, 32位系統則32位為一個字,64位系統以64位為1個字,這里討論的的8086為16位為一個字 >[info]入棧:push 將會一個新的元素放到棧頂 出棧:pop 從棧頂取出一個元素 特征: 后進先出 ![](https://img.kancloud.cn/eb/e0/ebe04f143b16f99a91b87e6dd1af7e91_814x645.gif) 賦值0123H給cpu寄存器ax,然后通過push ax 將指針指向棧頂最后將寄存器中的值壓入內存中 上面的例子是將1000H作為棧使用的那么: 1、CPU如何知道一段內存空間被當作棧使用? 8086CPU中,有兩個與棧相關的寄存器: * 棧段寄存器SS:存放棧頂的段地址 * 棧頂指針寄存器SP:存放棧頂的偏移 2、執行push和pop的時候,如何知道哪個單元是棧頂單元? 任意時刻, SS:SP指向棧頂元素。 **例子:** 將10000H~10001H-1(1000FH)這段空間作為棧 ``` mov ax,1000H //棧段地址設為1000H mov ss,ax //將棧頂指針設為0010H mov sp,0010H ``` 8086是16位一個字(一個字等于一個存儲單元),棧操作的是字 ![](https://img.kancloud.cn/4f/e6/4fe65c82ff97f1d39c7bc95bf1647118_299x260.png) ``` mov ax,001AH mov bx,001BH push ax puh bx ``` ![](https://img.kancloud.cn/c1/16/c116c1025cd9875ba031f4c7bc2617f1_533x487.png) ![](https://img.kancloud.cn/2f/aa/2faab2a64ff8cfa708b04611bc18e810_746x182.png) ``` pop ax pop bx ``` 注意AX與BX發生了交換 ,此時 ax=001BH bx=001AH ![](https://img.kancloud.cn/ad/6c/ad6c2066acd56b9fc51b3b462990d24b_731x166.png) ## **超界問題** 執行入棧(push)時,棧頂會超出棧空間 執行出棧(pop)時,棧頂也會超出棧空間 8086CPU不保證對棧的操作不會超界: 8086CPU只知道棧頂在何處(由SS:SP指示),不知道程序安排的棧空間有多大。 我們在編程的時候要自己操心棧頂超界的問題,要根據可能用到的最大棧空間,來安排棧的大小,防止入棧的數據太多而導致的超界;防止出棧時棧空了仍然繼續出棧而導致的超界。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看