## 1.1 该手册的组织结构
该书从5个方面阐述了80386的体系结构:
```
第I部分 - 应用程序
第II部分 - 系统编程
第III部分 - 兼容性
第IV部分 - 指令集
附录
```
上面的分类一方面取决于体系结构本身,一方面取决于使用这本书的不同方式。入下表所示,后面的2部分旨在作为参考手册来帮组那些致力于在80386上开发软件的程序员。前面的3部分则是理论说明,它们说明体系结构的用途,解释术语和概念,描述那些或与专属用途相关,或与专属体系结构相关的指令。
```
解释说明
第I部分 - 应用程序
第II部分 - 系统编程
第III部分 - 兼容性
参考
第IV部分 - 指令集
附录
```
前面的3部分陈述了80386 CPU的执行模式和保护特性。应用特性和系统特性的区别由80386的保护机制决定。保护机制的主要用意在于是操作系统免于应用的干扰;因此,处理器使得一些寄存器和和指令不能被应用程序访问。第I部分讨论的是可以被应用访问的特性;第II部分讨论的特性只能由授权的系统软件或在非保护模式下访问。
80386的处理模式同样控制着可访问的特性。80386有3种处理模式:
1.保护模式。
2.实地址模式。
3.虚拟8086模式。
保护模式是80386处理器的正常的32位环境。在这种模式下,所有的指令和特性均可使用。
上电后处理器即进入实地址模式(经常简称为“实模式”)。实地址模式下,80386看起来像是一个更快速的,增加了一些新指令的8086。大多数80386软件在实地址模式下只是进行一些初始化操作。
虚拟8086模式(也常被称作“V86模式”)是一种动态模式,在这种意思上说,处理器可以频繁,快速的在V86模式和保护模式之间切换。CPU从保护模式进入V86模式去执行8086程序,然后再离开V86模式,进入保护模式继续执行原来的80386程序。
在保护模式下可使用的任何特性在V86模式下对于所有程序来说是一样的。这些特性构成了第I部分。在保护模式下系统软件可以使用的其他一些特性组成了第II部分。第III部分阐述了实地址模式和V86模式,也包括如何执行一个32位和16位的混合程序。
所有模式下可使用 第I部分-应用程序
只能在保护模式下使用 第II部分-系统编程
兼容模式 第III部分-兼容性
### 1.1.1 第I部分-应用编程
这部分呈现的是通常被应用程序员使用的特性。
第2章-基本编程模型:介绍了存储器的组织结构模型。定义数据类型。列举应用程序使用的寄存器集合。介绍堆栈。说明字符串操作。定义指令的组成。解释了地址计算。介绍应用程序可能用到的阿中断和异常。
第3章-应用指令集:纵览应用程序经常使用的指令。将指令按照功能分组;例如,字符串指令被分在一组,控制-传输指令被分在另一组。解释指令的概念。关于单个指令的详细介绍被放到了第IV部分,指令集参考。
### 1.1.2 第II部分-系统编程
这部分阐述的特性通常被下面的人使用:写操作系统,设备驱动,调试器以及为80386保护模式下应用程序提供支持的其他软件的人。
第4章-系统架构:纵览系统程序员使用的各项特性。介绍在第I部分没有提及的寄存器和数据结构。介绍面向系统的指令以及它们支持的寄存器和数据结构上下文。指出在在哪些章节可以找到寄存器,数据结构以及指令的详细信息。
第5章-内存管理:阐述了支持虚拟存储器的数据结构,寄存器以及指令的详细结构,以及段和页的概念。解释了设计者怎样选择存储器的组织模型,从完全线性(“平坦模式”)到使用页和段。
第6章-保护:展开存储器管理特性,包括它应用与断和页时的保护。说明了特权等级,堆栈切换,指针检查以及用户和超级用户模式的实现。多任务的保护被推迟到后面的章节。
第7章-多任务:阐述了硬件如何通过上下文切换和任务间保护来支持多任务。
第8章-输入/输出:揭示I/O特性,包括I/O指令,I/O的保护,以及I/O许可映射。
第9章-异常和中断:解释了80386中断的基本运行机制。中断和异常怎样和保护相联系。讨论了所有可能的异常,列举了触发条件和需要处理的信息,以及异常的恢复。
第10章-初始化:定义了处理器在复位或上电后的状态。说明了为实地址模式和保护模式设置寄存器,标志位以及数据结构。包含一个初始化示例。
第11章-协处理和多处理:解释了支持数字协处理器和共享存储器的多CPU的指令。
第12章-调试:告诉我们怎样使用调试寄存器。
### 1.1.3 第III部分-兼容性
本书的其他章节基本上把处理器看作是32位机器,为了简单而省略了16操作部件。确实,80386是32位机器,但是它的设计完全支持16位的操作数和寻址。这部分通过对在32位程序中支持16位程序和16位操作数的说明完整的描述了80386的结构特性。所有的3种模式均可执行16位程序:保护模式可以直接执行80286保护模式下的16位程序,实地址模式执行8086程序和80286实地址模式程序,虚拟8086模式在多任务环境下和其他80386保护模式程序一起执行8086程序。另外,32位和16位模块可以在保护模式下与32位和16位操作混合使用。
第13章-执行80286保护模式代码:在保护模式下,80386完全可以执行80286保护模式代码,因为80286是80386的子集。
第14章-80386实地址模式:说明80386的实地址模式。在这种模式下,80386看起来更像是一个快速的实地址模式下的80286,或增加了新指令的快速8086。
第15章-虚拟8086模式:80386能够快速的在保护模式和虚拟8086模式之间切换。这使其有能力在32位“本地模式”程序之间执行8086的多道程序。
第16章-混合16位和32位编码:即使在同一个程序或任务内,80386也能够混合16位和32位编码。而且,任何给定的模块可以同时使用16位和32位操作数和地址。
### 1.1.4 第IV部分-指令集
第I,II,III部分给出了指令和体系结构特定细节相关的总体描述,这部分用字母序列出了指令集,为汇编程序员,编写调试器,编译器,操作系统的人等提供了具体细节。指令介绍包括操作的逻辑描述,对标志位的影响,设置标志位的影响,操作数或地址长度属性的影响,处理器模式的影响以及可能产生的异常。
### 1.1.5 附录
附录给出了编码表和其他细节,它们被组织成了可以被汇编程序员和系统程序员快速索引的形式。
- 第一章 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实地址模式的不同