## 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实地址模式的不同