第一章 MS-DOS环境下高水平程序设计必备知识 1
1.1 MS-DOS的装入过程 1
1.2 两类基本的MS-DOS程序 5
1.2.1 使用COM格式 6
1.2.2 EXE程序结构 10
1.3 内存管理基础础 14
1.3.1 使用内存管理功能调用 16
1.3.2 内存控制块 19
1.3.3 内存图 20
1.4 MS-DOS EXEC功能 21
1.4.1 获得可用内存 23
1.4.2 请求EXEC功能 23
1.4.3 实例程序SHELL.C及SHELL.ASM 30
1.5 MS-DOS文件与记录操作 34
1.5.1 使用FCB功能 35
1.5.2 使用句柄文件和记录功能 46
1.5.3 MS-DOS出错代码 52
第二章 中断与DOS功能 56
2.1 中断机构 57
2.2 从汇编程序中访问软中断程序 60
2.3 从C语言中访问软中断程序 61
2.4 选择中断功能 64
2.5 MS-DOS功能 65
2.5.1 MS-DOS功能的一般用法 66
2.5.2 DOS服务功能分类 69
第三章 BIOS功能 91
3.1 BIOS功能的一般用法 92
3.2 BIOS功能分类 93
3.2.1 视频服务功能:中断10h 93
3.2.2 磁盘服务功能:中断13h 101
3.2.3 串行端口服务功能:中断14h 103
3.2.6 键盘服务功能:中断16h 105
3.2.4 盒式磁带报务功能:中断15h 105
3.2.5 AT机上的扩展服务功能:中断15h 105
3.2.7 打印服务功能:中断17h 107
3.2.8 时间和日期服务功能:中断1Ah 110
3.2.9 其他服务功能能 110
第四章 MS-DOS机器的其他资源 113
4.1 程序段前缀(PSP) 113
4.1.1 从汇编语言中访问PSP 115
4.1.2 从C语言中访问PSP 116
4.1.3 重要的PSP域 117
4.2 低内存地址的数据区 126
4.3 硬件产生的中断 129
4.3.1 外部硬件中断 130
4.3 硬件中断服务程序 131
4.4 其他 138
4.4.1 数据中断向量 138
4.4.2 端口 140
4.4.3 可安装设备驱程序 142
4.4.4 Ctrl-C处理程序 142
4.4.5 Ctrl-Break处理程序 145
4.4.6 致命错误处理程序 152
第五章 兼容性的理论与测试 159
5.1 一般的兼容性准则 160
5.2 确认计算机环境 162
5.2.1 资源表 162
5.2.2 动态测试 165
5.2.3 用户安装程序的使用 176
5.3 使用可提供的资源 177
5.3.1 使用特定资源 177
5.3.2 使用与机器类型有关的信息 177
5.4 MS-DOS各版本之间的差别及其兼容性问题 179
5.4.1 版本兼容性的一般概念 180
5.4.2 高级语言的考虑与MS-DOS中断 183
5.4.3 功能调用 184
5.4.4 错误代码 190
5.4.5 磁盘格式 195
5.4.6 文件操作 196
5.4.7 MS-DOS及IBM PC机系列 200
5.5 与其他操作系统的兼容性 203
5.5.1 CP/M-80 204
5.5.2 CP/M-86及Concurrent CP/M-86 206
5.5.3 Concurrent CP-DOS和Concurrent DOS-286 206
5.5.4 Xcnix和UNTX 207
5.6 “规距”的MS-DOS应用程序 207
5.6.1 基本准则 208
5.6.2 与硬件有关的IBM-PC应用程序 209
第六章 快速字符显示的程序实现 212
6.1 通过DOS/ANSI.SYS的视频显示 213
6.2 通过BIOS和属性代码的视频显示 215
6.3 通过直接对视频内存区写的视频显示 219
6.3.1 字符中函数 221
6.3.2 窗口函数 225
6.4 基准测试(Benchmark) 232
6.5 屏幕生成程序例 236
6.6 在C程序中使用视频显示子程序 258
第七章 内存驻留程序设计 266
7.1 编写TSR时需注意的问题 267
7.1.1 与其他TSR共存 267
7.1.2 与MS-DOS共存 273
7.1.3 与前台程序共存 278
7.1.4 与BIOS磁盘活动共存 282
7.1.5 与中断处理程序共存 283
7.1.6 可重新进入的问题 283
7.1.7 Microsoft标准 285
7.2 实现C语言程序的内存驻留 288
7.2.1 在C程序中使用tsr函数 295
7.2.2 汇编语言子程序的实现 298
7.2.3 侍改进的若干功能 304
第八章 扩充内存及其C语言接口 307
8.1 扩充内存规范(EMS)概述 308
8.2 EMS的C语言程序接口 310
8.2.1 错误码说明 317
8.2.2 接口功能函数 318
8.2.3 可实现的功能增加 323
8.3 从C语言中使用扩充内存 323
8.3.1 临时应用程序 323
8.3.2 内存驻留应用程序 323
8.4 Lolus/Intel/MiCrOSOft扩充内存规范参考手册 329
第九章 Intcl/8087/80287数学协处理器编程 345
9.1 程序员看8087 346
9.1.1 8087中的数据寄存器 346
9.1.2 8087中的浮点实数表示 347
9.1.3 8087使用的其他数据格式 349
9.1.4 数据类型小结 352
9.1.5 8087指令集 353
9.1.6 FWAIT前缀 354
9.1.7 8087的寻址方式 359
9.1.8 FINIT和FFREE指令 361
9.1.9 控制8087 361
9.2 对8087使用MS-DOS工具 366
9.2.1 对8087使用MASM 366
9.2.2 MASM的8087开关——/r和/e 368
9.2.3 MASM中的8087数据类型 368
9.2.4 对8087使用DEBUG 370
9.3 用MASM对8087编程的例子 372
9.3.1 FWAIT和FINIT指令 372
9.3.2 DUMP87子程序 372
9.3.3 使用8087实现二十一进制变换 383