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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                一個典型的CPU(此處討論的不是某一具體的CPU)由運算器、控制器、寄存器(CPU工作原理)等器件構成,這些器件靠內部總線相連。 前一章所說的總線,相對于CPU內部來說是外部總線。內部總線實現CPU內部各個器件之間的聯系,外部總線實現CPU和主板上其他器件的聯系。簡單地說,在CPU中: * 運算器進行信息處理; * 寄存器進行信息存儲; * 控制器控制各種器件進行工作; * 內部總線連接各種器件,在它們之間進行數據的傳送。 對于一個匯編程序員來說, CPU中的主要部件是寄存器。寄存器是CPU中程序員可以用指令讀寫的部件。程序員通過改變各種寄存器中的內容來實現對CPU的控制。不同的CPU,寄存器的個數、結構是不相同的。8086CPU有14個寄存器,每個寄存器有一個名稱 寄存器(緩存) cpu內部信息存儲單元(簡單的講是cpu中可以存儲數據的器件) 一個cpu中有多個寄存器,如:8086cpu有14個寄存器 * **通用寄存器**(存放一般性數據):AX、BX、CX、DX * **變址寄存器**:SI、DI * **指針寄存器**:SP(棧頂指針寄存器)、BP * **指令指針寄存器**:IP * **段寄存器**():CS(代碼段寄存器)、SS(棧段寄存器)、DS(數據段寄存器)、ES(附加段寄存器) * **標志寄存器**:PSW ![](https://img.kancloud.cn/78/63/78634e2b463ea8650744683ff84fc4d7_513x461.png) ![](https://img.kancloud.cn/f6/60/f66099de73d6bbe889f3e70470dabcb7_579x454.png) 共性: 8086cpu所有的寄存器都是16位的,可以存放兩個字節 一個16位的寄存器存儲一個16位的數據 他存儲的最大值為2^16-1即65536-1進制為FFFFH(H表示16進制) 例子1: 在AX中存儲18D(D表示10進制) 換成16進制為12H 換成2進制為10010B(B表示2進制) ![](https://img.kancloud.cn/0a/fd/0afda877c955a94a0ea83cd6e50c9b7f_690x326.png) 例子2: 在AX中存儲20000 換成16進制為4E20H 換成2進制為0100111000100000B ![](https://img.kancloud.cn/f5/a0/f5a0241fff423feadd40634320f0bd6c_557x84.png) 問題:8086上一代cpu中的寄存器都是8位的,如何保證程序的兼容性? 方案:通用的寄存器均可以分為兩個獨立的8位寄存器使用(細化:AX可以分為高八位AH和低八位AL) AX的低8位(0位-7位)構成了AL寄存器,高8位(8位-15位)構成了AH寄存器。AH和AL寄存器是可以獨立使用的8位寄存器。下圖展示了16位寄存器及它所分成的,兩個8位寄存器的數據存儲的情況。 ![](https://img.kancloud.cn/14/11/141141e9106dd709434965c70337d873_545x268.png) 轉成16位后4E保存在高八位,20保存在低八位 ![](https://img.kancloud.cn/1a/e6/1ae6d17993d42536eb25728e2b3aeee6_568x180.png) 想一想,一個8位寄存器所能存儲的數據的最大值為多少?2^8-1=255 由AX可以分為AH和AL 同理: BX可以分為BH和BL CX可以分為CH和CL DX可以分為DH和DL 8086是16位cpu 8086的字長為16bit 80386的字長為32bit ![](https://img.kancloud.cn/d2/0b/d20b6fe29fc4bb4fc27b3dc9cd4bbf70_984x527.png) ![](https://img.kancloud.cn/5f/09/5f096ba7ccb9655f0cb269f03da0f6f1_676x314.png) ## **用法舉例** ### **es附加段寄存器** ``` assume cs:code code segment mov ax,0ffffH mov ds,ax # (ds)=ffffH mov ax,0020H mov es,ax # 附加段寄存器(es)=0020H mov bx,0 mov cx,12 s:mov dl,[bx] #(ffff:0)=(dl)=EAH即(dx)=00EAH mov es:[bx],dl #(0020:0)=00EAH inc bx #bx累加 loop s mov ax,4c00H int 21H code ends end ```
                  <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>

                              哎呀哎呀视频在线观看