目录 1
第一章 PC硬件概述 1
1.1 基本寻址 1
1.2 内存类型 2
1.3 寄存器 2
1.4 再谈寻址 6
1.5 端口 6
1.6 硬件中断 7
1.7 定时器 9
1.8 通用I/O 9
1.9 键盘 9
1.10 显示 10
1.11 磁盘 11
第二章 DOS编程必备知识 12
2.1 MS—DOS的装入过程 12
2.1.1 BOOT程序 12
2.1.2 IO.SYS总体结构分析 13
2.1.3 SYS—INITⅡ中CONFIG.SYS文件的处理过程 14
2.1.4 COMMAND.COM的初始化流程 16
2.2 DOS应用程序的类型 18
2.2.1 .EXE文件 18
2.2.2 .COM文件 18
2.2.3 TSR程序 19
2.2.4 设备驱动程序 19
2.3 DOS中断 20
2.4 BIOS中断 21
2.5 BIOS变量 22
第三章 对DOS的C语言编程 23
3.1 指针寻址 23
3.2 访问环境块 26
3.3 输入和输出 27
3.4 中断 27
3.5 中断服务 32
4.1 ESCAPE 34
第四章 几个程序例子 34
4.2 SPACE 36
4.3 EDISP 37
4.4 PRTSCRN 39
4.5 SPYS 40
第五章 DOS服务 44
5.1 简单的I/O服务 46
5.2 磁盘控制操作 51
5.3 文件操作 56
5.4 FCB文件服务 59
5.5 句柄服务 60
5.6 目录操作 67
5.7 日期和时间操作 69
5.8 IOCTL操作 71
5.9 其它操作 74
5.10 其它DOS中断 80
6.1 显示器服务 86
第六章 ROM BIOS服务 86
6.2 设备配置服务 92
6.3 读常规内存的大小 92
6.4 磁盘服务 93
6.5 串行口服务 97
6.6 键盘服务 100
6.7 打印机服务 101
6.8 时钟设备服务 102
6.9 BIOS变量 103
第七章 DOS的内存管理 105
7.1 DOS6管理的各种内存 105
7.1.1 常规内存 105
7.1.2 扩展内存 105
7.1.3 扩充内存 106
7.1.4 高端内存 106
7.2 DOS的内存管理方法 107
7.3 DOS内存管理调用 107
7.4 直接访问DOS的内存管理 110
8.1 DOS的进程管理功能 113
第八章 DOS的进程管理 113
8.2 两个重要数据结构:EXE文件头和PSP详解 116
8.2.1 EXE件头的结构详解 116
8.2.2 PSP结构详解 117
第九章 直接存取技术 122
9.1 把文本写入屏幕存储器 122
9.2 中断规则 125
9.4 直接键盘存取 127
9.3 管理硬件中断 127
9.5 访问CD—ROM 133
9.5.1 MSCDEX—DOS访问CD—ROM的关键 133
9.5.2 寻找MSCDEX 134
9.5.3 判断一个驱动器是否是CD—ROM设备 136
9.6 定时和声音产生 136
9.7 AT的实时时钟 142
9.8 使用控制杆 144
9.9 并行口 147
9.10 串行口 149
9.10.1 串行口参数 150
9.10.2 直接UART存取 150
9.10.3 一个简单的终端仿真器 151
第十章 DOS6的数据压缩 163
10.1 MRCI介绍 163
10.2 使用MRCI 165
10.2.1 检测MRCI 165
10.2.2 MRCI请求包 165
10.2.3 使用MRCI 166
10.3 DoubleSpace调用介绍 175
第十一章 构造完备的应用程序 177
11.1 Break异常处理 178
11.2 严重错误处理 183
11.3 哪一种语言最好? 187
11.4 多任务研究 188
11.5 一个简单的程序HEXDUMP 188
11.6 一个高性能C应用程序 197
第十二章 图形程序设计 212
12.1 模式选择 213
12.2 像素表示法 215
12.2.1 CGA和HGA像素地址 216
12.2.2 EGA 218
12.2.3 VGA256色模式 223
12.3 设置颜色 223
12.3.1 CGA颜色 224
12.3.2 EGA颜色 225
12.3.3 VGA颜色 225
12.4 综合考虑 226
12.5 提高图形性能 239
12.6 Super VGA编程 240
12.6.1 什么是VESA VBE 240
12.6.2 使用VESA 241
12.6.3 关于VESA模式 241
12.6.5 控制VESA 243
12.6.6 关于VESA的总结 243
12.6.4 设置VESA模式 243
第十三章 鼠标编程 246
13.1 鼠标方式 246
13.2 鼠标屏幕 247
13.3 鼠标光标 247
13.4 鼠标灵敏度 247
13.5 重要的鼠标变量 248
13.6 基本的鼠标命令 248
13.7 一个基本的C语言鼠标库 254
13.8 查询鼠标 260
13.9 事件驱动程序设计 270
13.10 图形模式下使用鼠标 284
第十四章 扩充内存前景:EMS 286
14.1 EMS如何工作 286
14.2 检测EMS 287
14.3 选择EMS命令 288
14.4 维持兼容性 302
14.5 CEMS程序库 302
14.6 使用CEMS:DUP 305
14.7 在EMS中执行代码 316
第十五章 设备驱动程序 320
15.1 设备驱动程序的结构 320
15.2 装载设备驱动程序 324
15.3 设备驱动程序的类型 324
15.4 字符设备驱动程序命令 324
15.4.1 INIT 325
15.4.2 INPUT、OUTPUT和VERIFY、OUTPUT 325
15.4.3 INPUT(NO WAIT) 326
15.4.4 INSTATUS和OUTSTATUS 327
15.4.5 INFLUSH和OUTFLUSH 327
15.4.6 IOCTLINPUT和IOCTL OUTPUT 327
15.4.7 DEVICE OPEN和DEVICE CLOSE 327
15.4.8 GENERIC IOCTL 328
15.5 块设备驱动程序命令 328
15.5.1 INIT 328
15.5.2 MEDIA CHECK 330
15.5.3 BUILD BPB 331
15.5.4 INPUT,OUTPUT和VERIFY OUTPUT 331
15.6 任选命令 332
15.7 设备驱动程序的开发环境 333
15.8 一个字符设备驱动程序 339
15.9 一个完整的块设备驱动程序 343
15.10 调试设备驱动程序 352
15.11 进一步要考虑的问题 353
第十六章 TSR程序设计 355
16.1 TSR的体系结构 355
16.2 TSR的接口INT 2FH 356
16.3 WASTE0:一个简单的拦截器 356
16.4 WASTE1:改进版本 358
16.5 WASTE:最后版本 361
16.6 INTASM:一个拦截器开发环境 368
16.7 控制光标大小 379
16.9 弹出式TSR基础 382
16.8 关于拦截器的进一步工作 382
16.10 访问DOS 383
16.11 临界区 383
16.12 上下文管理 384
16.13 TSRASM:一个弹出式TSR开发环境 384
16.14 一些弹出式TSR范例 411
16.15 如果TSR不工作 421
第十七章 80386保护模式 423
17.1 保护模式的益处 423
17.1.1 访问4GB内存 423
17.1.2 虚拟存储 423
17.1.6 进程保护 424
17.1.8 改进的寻址模式 424
17.1.7 寄存器 424
17.1.9 多任务支持 424
17.1.4 改进的分段机制 424
17.1.3 地址映射 424
17.1.5 内存保护 424
17.1.10 硬件测试 425
17.2 分段机制 425
17.2.1 段选择符 425
17.2.2 表 425
17.2.3 保护模式特权机制 428
17.2.5 代码段的特权级 430
17.3 多任务处理 430
17.2.4 数据访问 430
17.4 再论代码段 432
17.5 异常情况 433
17.6 存储器管理 435
17.6.1 存储器管理 435
17.6.2 地址变换 435
17.6.3 页面故障 436
17.7 实模式和V86模式 437
17.8 V86模式下处理中断 438
17.9 切换到保护模式 438
17.9.3 设置TR 439
17.9.2 切换模式 439
17.9.1 必需的表 439
17.9.4 允许分页 440
17.9.5 返回实模式 440
17.10 PC机的保护模式 440
第十八章 使用扩展内存 442
18.1 BIOS调用 442
18.2 分配扩展内存 443
18.3 CEXT库程序 444
18.5 XMS内存的种类 450
18.4 扩展内存 450
18.6 调用驱动程序 451
18.7 常用的XMS调用 452
18.8 XMS风格的虚存 454
第十九章 硬件调试技术 457
19.1 8086的调试手段 457
19.2 80386的硬件调试 457
19.3.2 控制寄存器 458
19.3.1 地址寄存器 458
19.3 调试寄存器 458
19.3.3 状态寄存器 459
19.4 恢复被中断的程序 460
19.5 BREAK386 460
19.5.1 实现基本功能 460
19.5.2 调试信息 477
19.5.3 使用断点中断 478
19.5.4 注意项 482
19.5.6 恢复标志处理 483
19.5.5 细节问题 483
19.6 使用C语言写中断处理程序 484
19.6.1 使用C语言的问题和解决方案 484
19.6.2 使用C语言实现具体处理操作 489
19.7 较深入的工作 493
第二十章 实模式下访问4G字节内存空间 494
20.1 实模式下访问4G字节原理 494
20.2 功能库的实现 495
20.4 使用功能库 505
20.3 语言的要求 505
20.5 实例 506
20.6 可能发生的问题 509
第二十一章 DOS扩展器 511
21.1 关于PROT 511
21.2 使用PROT 512
21.2.1 段 512
21.2.2 写一个程序 514
21.3 综合考虑 517
21.4 动态连接模式 517
21.5 调试 521
21.6 确定故障原因 523
21.7 多任务处理 523
21.8 中断问题 524
21.9 如何管理中断 527
21.11 32位世界中的16位工具 528
21.12 程序例子 528
21.10 硬件中断 528
21.13 PROT的改进 529
21.14 商用DOS扩展器 650
21.14.1 兼容性 650
21.14.2 选择DOS扩展器 651
第二十二章 DOS下程序如何与Windows联系 653
22.1 Windows模式 653
22.2 进入Windows 653
22.4 其它Windows调用 654
22.3 启动和退出Windows 654
22.5 WINOLDAP功能调用 655
22.6 使用WINOLDAP 656
22.6.1 检测DOS盒 657
22.6.2 剪贴板基础 657
22.6.3 写入剪贴板 658
22.6.4 从剪贴板中读取数据 658
22.6.5 DOS使用剪贴板的库函数 658
22.7 总结 663