第一章概述 1
1-1 80486/80386简介 1
1-2 寄存器组 2
1-2-1 通用寄存器组 2
1-2-2 段寄存器和描述符寄存器 2
1-2-3 指令计数器 3
1-2-4 标志寄存器 3
1-2-5 控制寄存器 5
1-2-6 系统地址寄存器 7
1-2-7 调试寄存器 8
1-2-8 测试寄存器 8
1-3 32位地址运算 8
1-3-1 32位有效地址的计算 8
1-3-2 线性地址的计算 8
1-3-3 物理地址 9
1-4 中断和异常 9
1-4-1 中断和异常的分类 9
1-4-2 广义中断的识别 9
1-4-3 中断描述符和中断描述符表 10
1-4-4 广义中断的全过程 11
1-4-5 广义中断的响应顺序 12
1-5 数据类型和全地址类型 12
1-5-1 数据类型 12
1-5-2 全地址类型 13
1-6 32位寻址方式 14
1-6-1 32位存储器寻址方式 14
1-6-2 程序存储器寻址 15
1-7 操作尺寸与寻址尺寸的确定 15
1-7-1 W域与操作尺寸 15
1-7-2 默认的操作尺寸和寻址尺寸 15
1-7-3 指令的操作尺寸和寻址尺寸前缀 15
1-8 I/O地址空间 16
1-9 段寄存器的确定 16
第二章 指令系统 18
2-1 传送类指令 18
2-2 算术指令 22
2-3 逻辑运算指令 25
2-4 移位与循环移位指令 25
2-5 位操作指令 27
2-6 位串操作指令 27
2-7 串操作指令与重复前缀 28
2-8 转移指令 29
2-9 调用与返回指令 32
2-10 标志位设置指令与按条件设置字节指令 33
2-11 数字指令 34
2-12 系统寄存器的装入与存储指令 34
2-13 保护属性检查指令 35
2-14 高级语言指令 36
2-15 暂停和空操作指令 37
2-16 Cache管理指令 38
2-17 指令前缀小结 38
第三章 实地址模式 39
3-1 实地址模式的进入 39
3-2 实地址模式下的段式管理 41
3-3 实地址模式下的操作尺寸和寻址尺寸 41
3-4 实地址模式指令 42
3-5 实地址模式下的异常 43
3-6 与8086处理器的区别 45
3-7 与80286处理器的区别 47
3-8 80486与80386在实地址模式下的区别 48
第四章 保护模式 49
4-1 选择符 49
4-2 段描述符 49
4-3 系统描述符 51
4-4 中断描述符 52
4-5 描述符表 52
4-6 特权级和保护 54
4-7 其它保护属性检查 56
4-8 对操作系统的保护 57
4-9 保护模式下的转子与返回 58
4-10 保护模式下的中断和异常 60
4-11 简单保护系统的创建举例 62
4-12 存储器页式管理机构 70
4-12-1 转换表 70
4-12-2 页目录项和页表项 71
4-12-3 页变换原理 72
4-12-4 相联存储器TLB 73
4-12-5 页变换过程 74
4-12-6 页请求虚拟存储器系统 74
第五章 多任务系统和多处理系统 76
5-1 任务状态段TSS 76
5-2 TSS描述符和任务门 78
5-3 任务转换过程 79
5-4 80486/80386多处理特性 81
5-4-1 总线锁定 81
5-4-2 LOCK前缀的使用 82
5-4-3 自动锁定 82
5-4-4 伪锁定 83
第六章 虚拟8086模式 84
6-1 虚拟8086模式与实地址模式的区别 84
6-2 虚拟8086模式下的指令 84
6-3 虚拟8086模式下的80486/80386与8086的区别 86
6-4 虚拟8086模式下的段式管理 87
6-5 虚拟8086模式下的页式管理 87
6-6 虚拟8086模式下的中断和异常 88
6-7 虚拟8086模式的进入与退出 89
6-8 在虚拟8086模式下实现DOS操作系统的程序实例 90
6-8-1 程序梗概 90
6-8-2 与程序有关的数据结构 91
6-8-3 有关的子程序 92
6-8-4 主程序 92
6-8-5 在虚拟8086模式下对中断和异常的处理 93
6-8-6 程序清单 95
第七章 高速缓冲存储器 128
7-1 Cache的基本概念 128
7-2 80486的内部Cache结构 129
7-3 内部Cache的操作 130
7-4 页一级的Cache管理 131
第八章 调试功能和测试功能 132
8-18 0486/80386的在片调试功能 132
8-2 调试寄存器 132
8-3 80486/80386的自测试 134
8-4 TLB的测试 134
8-5 Cache的测试 136
第九章 数字协处理 139
9-1 数据类型和格式 139
9-2 特殊数字值 141
9-3 FPU寄存器组 146
9-3-1 FPU寄存器堆栈 146
9-3-2 FPU状态字寄存器 147
9-3-3 FPU控制字寄存器 147
9-3-4 FPU的特征字寄存器 148
9-3-5 数字指令指针和数据指针 148
9-3-6 数字处理部件的环境 148
9-4 数字异常 150
9-4-1 数字异常的处理 150
9-4-2 异常条件的屏蔽响应 151
9-4-3 应用程序员眼中的数字异常处理程序 151
9-4-4 无效操作 152
9-4-5 零除 152
9-4-6 非正常实数操作量 152
9-4-7 数字上溢和下溢 153
9-4-8 精度下降 154
9-4-9 数字异常的优先权 154
9-5 有关数字处理的系统设计 155
9-5-1 寻址模式的影响 155
9-5-2 有关数字处理的初始化 155
9-5-3 异常处理程序 156
9-6 数字指令集 158
9-6-1 源操作量和目标操作量 158
9-6-2 数据传送指令 159
9-6-3 非超越指令 159
9-6-4 比较类指令 161
9-6-5 超越函数指令 165
9-6-6 常数指令 165
9-6-7 控制指令 166
9-7 主处理单元和数字处理单元的同步 167
第十章 兼容性 169
10-1 在80486/80386上运行80286程序 169
10-2 80486/80386和80286的区别 169
10-3 80486和80386的区别 170
10-4 80486和80386/80387系统的区别 171
10-5 80486和80286/80287系统的区别 172
10-6 80486与8086/8087系统的区别 176
10-7 16位和32位混合模式 177
10-7-1 纯16位模式和纯32位模式 178
10-7-2 80486/80386的16位和32位控制机制 178
10-7-3 数据类段的共享 179
10-7-4 16位和32位代码段间的控制转移 179
10-7-5 中断/异常的控制转移 180
10-7-6 接口程序 180
附录一 80486/80386指令系统 182
附录二 80486/80387数字协处理器指令集 260
附录三 80486/80386异常操作 284
参考资料 300