<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                CS:IP是保存匯編指令的地方,它不會自動執行需要編譯成可執行文件,或者在debug中使用t命令時才會將這些匯編指令取出來執行 CS:代碼段寄存器 IP:指令指針寄存器 CS:IP:CPU將內存中的CS:IP指向的內容當做指令執行 ![](https://img.kancloud.cn/da/c1/dac115e5de57d86a26d13bcb4a3d95dc_709x423.png) ![](https://img.kancloud.cn/f6/ab/f6ab573d552cdffadebe8799f2fe0208_877x317.png) ![](https://img.kancloud.cn/00/10/0010f59a60c212bd5109a62cad9eb727_789x458.png) (1) 8086CPU當前狀態: Cs中的內容為2000H, IP中的內容為0000H; (2)內存20000H-20009H單元存放著可執行的機器碼; (3)內存20000H-20009H單元中存放的機器碼對應的匯編指令如下。 地址: 20000H-20002H,內容: B8 23 01,長度: 3Byte,對應匯編指令: mov ax,0123H 地址: 20003H-20005H,內容: BB 03 00,長度: 3Byte,對應匯編指令: mov bx,0003H 地址: 20006H-20007H,內容: 89 D8,長度: 2Byte,對應匯編指令: mov ax,bx 地址: 20008H-20009H,內容: 01 D8,長度: 2Byte,對應匯編指令: add ax,bx **8086cpu執行一條指令的過程:** ![](https://img.kancloud.cn/45/9c/459c86b88f35afa4d1e5a68c0b68c1e0_777x373.gif) 此時, CS: IP指向內存單元2000:0003. 執行控制器執行指令B8 23 01(即mov ax.0123H) 指令B82301被執行后AX中的內容為0123H(此時, CPU將從內存單元2000:0003處讀取指令。) CS:2000H, IP:0003H(CPU將從內存2000H× 16+0003H處讀取指令BB 03 00) CPU從內存20003H處讀取指令BB 03 00入指令緩沖器(IP中的值加3) 執行指令вв 03 00(D mov bx.0003н) CPU從內存20006H處讀取指令89D8入指令緩沖器(IP中的值加2) 執行指令89 D8(即 mov ax,bx)后, AX中的內容為0003H CPU從內存20008H處讀取指令01 D8入指令緩沖器(IP中的值加2) 執行指令01 D8(即add ax.bx)后, AX中的內容為0006H 將長度為10個字節的指令,存放在123B0H-123B9H的一組內存單元中,我們就可以認為, 123B0H-123B9H這段內存是用來存放代碼的,是一個代碼段,它的段地址為123BH,長度為10個字節 ``` mov ax, 0000 (B8 00 00) add ax,0123B (05 23 01) mov bx, ax (8B D8) jmp bx (FF E3) ``` 如何使得代碼段中的指令被執行呢? CPU并不會自動地將我們定義的代碼段中的指令當作指令來執行。 CPU只認被CS:IP指向的內存單元中的內容為指令。 所以,要讓CPU執行我們放在代碼段中的指令,必須要將CS:IP指向所定義的代碼段中的第一條指令的首地址。對于上面的例子,我們將一段代碼存放在123BOH-123B9H內存單元中,將其定義為代碼段,如果要讓這段代碼得到執行,可設CS=123BH. IP=0000H。 ## **小結** (1)段地址在8086CPU的段寄存器中存放。當8086CPU要訪問內存時,由段寄存器提供內存單元的段地址。8086CPU有4個段寄存器,其中CS用來存放指令的段地址. (2) CS存放指令的段地址, IP存放指令的偏移地址8086機中,任意時刻, CPU將CS:IP指向的內容當作指令執行。 (3) 8086CPU的工作過程:①從CS: IP指向的內存單元讀取指令,讀取的指令進入指令緩沖器:@IP指向下一條指令③執行指令。(轉到步驟0,重復這個過程。) (4) 8086CPU提供轉移指令修改cs,IP的內容。
                  <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>

                              哎呀哎呀视频在线观看