第一章 CPU 体系结构 1
1.1 引言 1
1.2 常规内存和扩充内存 1
1.2.1 段 2
1.2.2 实模式 4
1.2.3 DOS 实模式程序设计 4
1.2.4 DOS 保护模式程序设计 5
1.3 286/386/486 内部结构 7
1.3.1 CPU 寄存器 8
1.3.2 指令 8
1.3.3 实模式和保护模式 9
1.4 内存管理 10
1.4.1 只使用段式结构 10
1.4.2 386 页映射 11
1.5 争用问题 13
1.5.1 特权 13
1.5.2 I/O 特权 14
1.5.3 任务切换 14
1.6 中断 15
1.6.1 实模式中断 15
1.6.2 保护模式中断 16
第二章 汇编语言规则 17
2.1 引言 17
2.2 代码和数据标号 17
2.2.1 代码标号 17
2.2.2 数据标号 18
2.2.3 访问数据 19
2.2.4 指针 19
2.2.5 LES,LDS 和LEA 指令 20
2.2.6 局部数据 21
2.3 类型覆盖 22
2.4 结构 24
第三章 打开Windows 26
3.1 引言 26
3.2 DOS 和Windows 程序设计 26
3.3 构造一个Windows 应用程序 28
3.3.1 库函数 28
3.3.2 汇编和连接机制 28
3.3.3 连接步骤 29
3.3.4 对资源文件加工的两个步骤 29
3.4 Windows 程序设计机制 30
3.4.1 对象 30
3.4.2 句柄 30
3.4.3 实例 31
3.4.4 消息 31
3.4.5 回调函数 33
3.5 数据类型 34
第四章 骨架结构 37
4.1 引言 37
4.2 开始工作 37
4.2.1 所需的工具 37
4.2.2 资源和定义文件 39
4.2.3 消息的格式 39
4.2.4 Make 文件 40
4.2.5 开发步骤 41
4.3 应用程序结构 42
4.3.1 应用程序代码 42
4.3.2 WINMAIN () 44
4.3.3 回调函数 48
第五章 高级汇编语言 55
5.1 引方 55
5.2 包含文件 55
5.3 框架程序分析 56
5.4 .MODEL 伪指令 64
5.5 私有数据和全局数据 65
5.5.1 MASM 与TASM 的作用域 66
5.5.2 自动型数据的生存期 67
5.6 汇编与连接 67
5.7 MASM-6 和TASM-3 69
5.7.1 WINDOWS 修饰符 70
5.7.2 原型 70
5.7.3 回调设计 72
5.7.4 其他不兼容性 73
5.7.5 MASM 的汇编与连接 74
第六章 程序设计 75
6.1 引方 75
6.2 对象寻址 75
6.2.1 调用一个函数 76
6.2.2 早联编(Binding)方式 78
6.2.3 晚联编方式 78
6.2.4 C++ 联编方式 79
6.2.5 汇编语言联编方式 81
6.3 THIS 的使用 82
6.4 与C++ 的接口 83
6.4.1 编译到ASM 的输出 83
6.4.2 直接插入汇编 84
6.4.3 ASM 插桩 86
第七章 令人惊异的9行程序 89
7.1 引言 89
7.2 框架程序 90
7.2.1 覆盖 92
7.2.2 kickstart 92
7.2.3 消息处理 93
7.3 WINDOW 对象 93
7.4 WINMAIN () 97
7.5 回调 101
7.6 MAKE () 105
7.7 继承 108
7.8 后记 112
第八章 BIOS、DOS 服务及WIndows 初级函数 116
8.1 引方 116
8.2 BIOS 和DOS 服务 117
8.3 DOS 保护模式 120
8.4 INT-2Fh 的扩展 122
8.5 Windows 函数 124
第九章 直接硬件访问 134
9.1 引方 134
9.2 初始化 134
9.3 段寻址 135
9.4 直接视频 137
9.4.1 视频恢复 138
9.4.2 改变视频模式 139
9.4.3 一个直接视频文本模式例程 139
9.4.4 一个直接视频窗口程序 144
9.5 I/O 端口 149
第十章 实时事件 152
10.1 引言 152
10.2 驻留程序(TSR) 152
10.2.1 向量挂接 153
10.2.2 中断服务例程(ISR) 155
10.2.3 测试 157
10.3 硬件中断 158
10.3.1 XT 硬件中断 158
10.3.2 AT 硬件中断 159
10.3.3 Windows 标准模式硬件中断 159
10.3.4 增强模式硬件中断 164
10.4 直接内存访问 165
第十一章 实模式访问 166
11.1 引言 166
11.2 在保护模式下访问实模式 166
11.2.1 经由IVT 访问实模式 167
11.2.2 虚拟机 169
11.2.3 DOS 的驻留程序(TSR) 171
11.3 从实模式下访问保护模式 172
11.3.1 从DOS 应用程序向Windows 应用程序发送信号 173
11.3.2 DOS 应用程序的信号装置 176
11.3.3 在Windows 应用程序中挂住实模式中断 178
第十二章 程序转换 183
12.1 引言 183
12.2 中断处理程序 183
12.2.1 保护模式ISR 代码举例 184
12.2.2 保护模式ISR 的有关问题 185
12.2.3 实模式句柄 187
12.3 透过VM 的映象 193
12.3.1 透过V86 VM 的映象 193
12.3.2 VM 的4.3GB 线性地址空间映象到物理内存 194
12.4 Windows/DOS/DPMI 之间的关系 196
12.4.1 Windows 对INT-2Fh 的扩展 196
12.4.2 Windows/INT-2Fh 之间的关系 197
12.4.3 编写针对Windows 的DOS 应用程序 197
12.4.4 DPMI 和Windows 的关系 198
12.5 各种模式间的转换 198
12.5.1 DPMI 栈和模式切换 198
12.5.2 中断及异常 199
12.6 汇编与高级语言 201
附录A 86/286/386 指令集 203
附录B 键盘码表 215
附录C DPMI 服务 219
附录D INT 2F 扩展 243