## 1.2 其他文献
下面的书籍包含有关80386的其他资料。
+ Introduction to the 80386, order number 231252
+ 80386 Hardware Reference Manual, order number 231732
+ 80386 System Software Writer's Guide, order number 231499
+ 80386 High Performance 32-bit Microprocessor with Integrated Memory Management (Data Sheet), order number 231630
## 1.3 符号转换
本手册在描述数据结构,指令助记符,十六进制数以及上标和下标时用了特殊的符号。下标用{}括起来,例如10{2} = 10 以2为基。上标用()加上前面的^来表示,例如,10^(3) = 10的3次幂。复习这些符号有助于以后的阅读。
### 1.3.1 数据结构格式
在内存数据结构的示例图中,低位地址出现在图示的右边;地址从右至左,从下往上递增。位从右向左依次编号。图1-1举例说明了这种惯例。
### 1.3.2 未定义位和软件兼容性
在许多寄存器和存储器的布局图中,一些位被标记为未定义。当位标记为未定义(如图1-1所示)时,将来的软件将这些位按未定义来处理对于软件兼容性非常重要。在处理未定义位时软件应该遵循下列规则:
+ 在测试含有未定义位的寄存器时,不要依赖这些位的状态。在测试前要屏蔽掉这些未定义位。
+ 在将寄存器的值拷贝到另一个寄存器时,不要依赖这些位。
+ 不要依赖于保留在已写入未定义位的信息。
+ 装载寄存器时,要始终把未定义位按0载入,或以之前存在寄存器中的值重新载入。
注意: 依赖于寄存器中的未定义位将导致软件依赖于80386在处理这些位时的未指定的处理方式。如果将来的处理器使用了未定义位,那么依赖于这些位的软件有不兼容的风险。任何软件都要避免依赖于未定义的80386寄存器位。
![](https://box.kancloud.cn/2016-03-06_56dbfdabde912.png)
### 1.3.3 指令操作数
当用符号表示指令时,你正在使用的是80386汇编指令集。在这个集合中,指令遵循下面的格式:
```
标号:前缀 助记符 参数1,参数2,参数3
```
这里:
+ 标号是指令的标识符,后面跟冒号。
+ 前缀是一条指令前缀的可选保留名字。
+ 助记符暗示指令执行的操作,操作码中的一个保留字。
+ 操作数参数1,参数2,参数3为可选项。可以有0-3个参数,取决于指令码。当含有参数时,它们或者是立即数,或者是数据项的标识符。操作数标识符可以是寄存器的保留字,或者在其他程序中声明(在例子中可能没有这种形式),指向数据项。当修改数据的指令中含有两个操作数时,右边的是源操作数,左边的是目的操作数。
例子:
```
LOADREG: MOV EAX, SUBTOTAL
```
本例中,LOADREG是标号,MOV是操作码指令助记符,EAX是目的操作数,SUBTOTAL是源操作数。
### 1.3.4 十六进制数
十六进制数字后面加上H的字符串表示以16为基的数字。十六进制数字从下面的集合中选取(0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F)。某些情况下,特别是在程序语法例子中,一个前导零会被加在A-F前面。例如,0FH等于十进制的15。
### 1.3.5 上标和下标
本手册使用特殊的符号来表示上标和下标。下标用{}括起来,例如10{2} = 10 以2为基。上标用()加上前面的^来表示,例如,10^(3) = 10的3次幂。
编者注:本手册在适当的地方用实际形式来表示上标和下标。
- 第一章 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实地址模式的不同