## 14.8 與80286實地址模式的不同
80386的實地址模式和80286幾乎沒有什么不同,除了初始化過程外,對已有的80286程序不太可能有影響。
### 14.8.1 總線鎖
80286和80386有著不同的總線鎖實現方法。使用專屬與80286的存儲器鎖的程序如果被傳到80386的某個應用上,可能不會正常運行。
LOCK前綴以及相應的輸出信號應該只是用來阻止總線控制器在數據移動過程中被中斷。LOCK應該只是用在更新存儲器的下列指令之前。在其他任何指令之前使用LOCK將導致未定義操作碼異常。
+ 位測試與修改:BTS, BTR, BTC。
+ 交換:XCHG。
+ 一元算術和邏輯:INC, DEC, NOT和NEG。
+ 二元算術和邏輯:ADD, ADC, SUB, SBB, AND, OR, XOR。
鎖指令只被授權由目的操作數定義的存儲器區域,但也可以鎖定一個更大的存儲器區域。例如,典型的8086和80286配置鎖定整個物理存儲器空間。對于80386,定義的存儲器區域被授權鎖,以防止處理器在完全相同的區域執行鎖指令,即相同的起始地址和相同的長度。
### 14.8.2 第一條指令的位置
80386的起始位置是0FFFFFFF0H(距32位地址空間末端16字節),不同于80286的0FFFFF0(距24位地址空間末端16字節)。許多80286 ROM初始化程序可以在這個環境下正常運行。其他的可以通過重定義外部硬件的A{31-20}來正常工作。
### 14.8.3 通用寄存器的初始值
80386的某些通用寄存器在復位后可能含有與80286不同的值。這不應該回引起兼容問題,因為8086的寄存器在復位后是未定義的。如果在上電過程中要求自檢,并且檢測到了錯誤,則EAX包含一個非零值。EDX包含部件和版本標識符。更多信息參見第十章。
### 14.8.4 MSW初始化
80286將MSW初始化成FFF0H,但是80386用0000H來初始化這個寄存器。這個差異應該沒關系,因為不同的比特位在80286中未定義。讀取MSW的程序只有在它們依賴于那些高位的未定義位的時候,才會在80386上有不同的表現。
- 第一章 80386介紹
- 1.1 該手冊的組織結構
- 1.2 其他文獻
- 第二章 編程基本模型
- 2.1 存儲器組織和段
- 2.2 數據類型
- 2.3 寄存器
- 2.4 指令格式
- 2.5 操作數選擇
- 2.6 中斷和異常
- 第4章 系統寄存器
- 4.1 系統寄存器 (System Registers)
- 4.2 系統指令 (System Instructions)
- 第五章 內存管理
- 5.1 分段地址轉換(Segment Translation)
- 5.2 分頁地址轉換(Page Translation)
- 5.3 混合分段和分頁地址轉換(Combining Segment and Page Translation)
- 第六章 內存管理
- 6.1 為什么要保護(Why Protection?)
- 6.2 80386保護機制概述(Overview of 80386 Protection Mechnaisms)
- 6.3 段級保護(Segment-Level Protection)
- 6.4 頁級保護(Page-Level Protection)
- 6.5 混合分頁和分段保護(Combining Page and Segment Protection)
- 第7章 多任務(Multitasking)
- 8.1 I/O 尋址(I/O Addressing)
- 7.1 任務狀態段(Task State Segment)
- 7.3 任務寄存器(Task Register)
- 7.4 任務門描述符(Task Gate Descriptor)
- 7.5 任務切換(Task Switching)
- 7.6 任務鏈(Task Linking)
- 7.7 任務尋址空間(Task Address Space)
- 第8章 輸入 輸出
- 8.2 I/O 指令(I/O Instructions)
- 8.3 保護和I/O(Protection and I/O)
- 第9章 異常和中斷(Exceptions and Interrupts)
- 9.1 識別中斷(Identifying Interrupts)
- 9.2 允許和禁止中斷(Enabling and Disabling Interrupts)
- 9.3 同時發生的中斷和異常的優先級(Priority Among Simultaneous Interrupts and Exceptions)
- 9.4 中斷描述符表(Interrupt Descriptor Table)
- 9.5 IDT 描述符(IDT Descriptors)
- 9.6 中斷任務和中斷子程序(Interrupt Tasks and Interrupt Procedures)
- 9.7 出錯碼(Error Code)
- 9.8 異常條件(Exception Conditions)
- 9.9 異常總結(Exception Summary)
- 9.10 出錯碼總結(Error Code Summary)
- 第10章 初始化(Initialization)
- 10.1 復位后處理器狀態(Processor State After Reset)
- 10.2 實模式初始化(Software Initialization for Real-Address Mode)
- 10.3 切換到保護模式(Switching to Protected Mode)
- 10.4 保護模式初始化(Software Initialization for Protected Mode)
- 10.5 初始化示例
- 10.6 TLB測試
- 第十四章 80386實地址模式
- 14.1 物理地址構成
- 14.2 寄存器和指令
- 14.3 中斷和異常處理
- 14.4 進入和離開實地址模式
- 14.6 實地址模式異常
- 14.7 與8086的不同
- 14.8 與80286實地址模式的不同