<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國際加速解決方案。 廣告
                ## 4.1 系統寄存器 (System Registers) 為系統程序員設計的寄存器可以分為以下幾類: EFLAGS (標志寄存器) Memory-Management Registers (內存管理寄存器) Control Registers (控制寄存器) Debug Registers (調試寄存器) Test Registers (測試寄存器) ### 4.1.1 系統標志 (System Flags) 系統標志寄存器EFLAGS 控制著 I/O、可屏蔽中斷(maskable interupts)、調試(debuging)、任務切換(task switching)、保護模式下虛擬8086方式的執行、多作務環境(multitasking environment)。這些標志在圖 4-1 中被高亮顯示。 IF ( 中斷許可標志 Interrupt-Enable Flag,比特位 9) 設置 IF 使CPU可識別外部(可屏蔽)中斷請求。復位 IF 則禁止中斷。 IF 對不可屏蔽外部中斷和異常的識別沒有任何作用。關于中斷的詳細信息,請參看第9章的描述。 NT (嵌套任務 Nested Task, 比特位 14) 處理器用嵌套位來控制被中斷或被調用的任務鏈。NT 對 IRET 指令的操作有影響。更多的信息請參看第7章和第9章。 RF (繼續位 Resume Flag, 比特位 16) RF 位暫時禁止調試異常,以便一條指令可以在一個調試異常結束后立即重看書而且不會引發另一個調試異常。參看第12章以獲得更多的細節。 TF (陷阱位 Trap Flag,比特位 8) 設置 TF 可以讓處理器工作在單步調試模式。在此模式下,CPU 每執行完一條指令后將自動引發一個異常,這樣可以在程序每執行完一條指令后對程序進行查詢。單步僅僅是80386 眾多調試特性的一個。參看第12章以獲得更多的細節。 VM (虛擬8086 模式 Virtual 8086 Mode,比特位 17) 當此位設置時,VM 標志說明一個任務正在執行一個8086 程序。參看第14章以得到更多80386 在保護模式下執行8086 任務、多任務環境的詳細介紹。![](../Images/image002.gif) ### 4.1.2 內存管理寄存器 (Memory –Management Registers) 80386 有4個寄存器來尋址特定的數據結構,它們用來實現段式內存管理。 GDTR???? 全局描述符表寄存器 (Global Descriptor Table Register) LDTR???? 局部描述符表寄存器 (Local Descriptor Table Register) 這些寄存器指向段描述符表 GDT 和 LDT。第5章對通過描述符表來尋址的機制做了詳細的介紹。 IDTR????? 中斷描述符表寄存器 (Interrupt Descriptor Table Register) 這個寄存器指向一張包含中斷處理子程序入口點的表(IDT)。第9章對中斷機制進行的詳細介紹。 TR? 任務寄存器 (Task Register) 這個寄存器指向當前任務信息存放處,這些信息是處理器所需要的。第7章對80386的多任務特性做了介紹。 ### 4.1.3 控制寄存器 (Control Registers) 圖4-2顯示了80386的控制寄存器,CR0、CR2、和CR3。這些寄存器可以通過MOV 指令的一些變種形式被系統程序員所訪問,這樣便可以把它們存入通用寄存器或從通用寄存器中加載,例如: ``` MOV????? EAX ,???? CR0 MOV????? CR3 ,???? EBX ``` CR0 包含系統控制標志,這些標志控制著整個系統的運行,而不僅僅是針對某一個特定的任務。 EM (摸擬位 Emulation,比特位 2) EM 指示協處理器功能是否通過摸擬來實現。更多的信息請參看第11章。 ET? (擴展類型 Extension Type, 比特位 4) ET 指明了系統內協處理器的類型(80287 或80387)。詳細情況請查看第11章和第10章。 MP (數學部件存在 Math Present,比特位 1) MP 控制 WAIT 指令的執行,WAIT 用于系統與協處理器的同步。第11章對其進行詳細介紹。 PE? (保護模式允許 Protection Enable,比特位 0) 設置PE 將讓處理器工作在保護模式下。復位PE將返回到實模式工作。關于模式切換請參看第14章和第10章。 PG? (分頁允許 Paging, 比特位 31) PG 指明處理器是否通過頁表來轉換線性地址到物理地址。關于分頁地址轉換請查看第5章。關于如何設置PG位,請查看第10章。 TS? (任務已切換Task Switched,比特位 3) 處理器第次做任務切換時將設置 TS 位, 當執行協處理器指令時將會測試 TS 位。詳細信息請查看第11章。 CR2 被用來當PG位置位時,處理缺頁異常。當發生缺頁異常時,處理器自動將引起缺頁異常的線性地址存放到CR2。關于缺頁中斷請查看第9章。 CR3 只有當PG 位設置時才有用。通過CR3,CPU 可以定位當前任務的頁目錄表。關于頁表和頁地址轉換機制請查看第5章。 ![](../Images/image004.gif) ### 4.1.4 調試寄存器 (Debug Register) 調試寄存器使80386有很好的調試功能,包括斷點、不改變代碼段情況下設置指令斷點。關于它們的格式和用途請參看第12章。 ### 4.1.5 測試寄存器 (Test Registers) 測試寄存器并不是80386體系結構的標準部件。它們僅僅是用來測試TLB 地址轉換信息,這些存貯的是來自頁表中的。查看第12章,關于怎樣使用這些寄存器。
                  <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>

                              哎呀哎呀视频在线观看