第一部分 DOS概述 3
第1章DOS简介 3
1.1 什么是DOS 3
1.2 DOS的历史 4
1.2.1 1.0版 6
1.2.2 1.1版 6
1.2.3 1.25 版 ... 6
1.2.1 2.0版 6
1.2.8 3.2版 7
1.2.5 2.1版 7
1.2.6 3.0 版 7
1.2.7 3.1版 7
1.2.10 4.0版 8
1.2.9 3.3版 8
1.2.11 5.0版 8
1.2.12 6.0版 8
1.2.13 未来展望 9
1.3 DOS的结构 9
1.4 DOS的程序员接口 10
1.5小结 11
目 录 11
译者序 11
第2章DOS系统结构 12
2.1 “虚机”概念 12
引 言 13
2.2物理机器 13
2.3处理器 13
2.3.1 8086内存寻址 14
2.3.2 8086寄存器集 16
2.3.3 80286及其更高档的处理器 19
2.3.4 CPU芯片的识别 20
2.3.6数学协处理器的识别 22
2.3.5数学协处理器 22
2.4内存 24
2.5 I/O通道 25
2.5.1键盘 25
2.5.2显示器屏幕 26
2.5.3打印机 28
2.5.4串行口 28
2.5.5 鼠标 29
2.6存储设备 29
2.6.1物理磁盘结构 29
2.6.2逻辑磁盘结构 30
2.7软件 31
2.7.1 BIOS 31
2.7.2 DOS核心 32
2.7.3命令处理器 32
2.7.4设备驱动程序 33
2.8小结 34
3.1 DOS启动顺序 35
第3章动态的DOS 35
3.2命令处理 38
3.3 DOS下的程序 39
3.3.1 COM程序 39
3.3.2 EXE程序 41
3.4一些高级语言的例子 45
3.4.1一个Turbo Pascal程序 45
3.4.3比较不同版本的程序 46
3.4.2一个编译的C程序 46
3.5 中断 48
3.5.1 内部中断 49
3.5.2非屏蔽中断 49
3.5.3硬件(可屏蔽)中断 50
3.5.4软件中断 50
3.6内存分配与管理 52
3.7 小结 55
4.1从程序中访问DOS和BIOS 56
第4章DOS和BIOS接口 56
4.1.1一个对DOS的简单调用 57
4.1.2传递字符串地址给DOS 58
4.2高级语言资源 59
4.2.1 C语言 60
4.2.2 Turbo Pascal 68
4.2.3 Quick BASIC 72
4.3 小结 76
第二部分 输入输出设备 79
第5章输出设备 79
5.1基本的字符设备 79
5.2看看显示系统的工作方式 80
5.2.1存储和显示视频数据 81
5.2.2视频显示格式 83
5.2.3识别视频显示适配卡 87
5.3.1利用DOS和BIOS视频功能编程 99
5.3视频功能 99
5.3.2使用多个显示页 104
5.4打印机功能 106
5.5 小结 108
第6章输入设备 109
6.1键盘 109
6.1.1了解键盘的工作方式 109
6.1.2用BASIC读键盘 113
6.1.3使用Int 16h来访问键盘 114
6.1.4使用Int 21h来访问键盘 118
6.1.5识别键盘支持的水平 124
6.2鼠标 125
6.2.1了解鼠标的工作方式 125
6.2.2初始化鼠标驱动程序 125
6.2.3鼠标位于何处 126
6.3小结 130
第7章串行设备 131
7.1串行接口 132
7.2串行转换:UART 134
7.2.1发送保持寄存器(THR) 135
7.2.2接收数据寄存器(RDR) 135
7.2.3波特率除数(BRD) 135
7.2.4中断允许寄存器(IER) 136
7.2.5 中断识别寄存器(IIR) 136
7.2.6 FIFO控制寄存器(FCR) 137
7.2.7线控制寄存器(LCR) 137
7.2.8调制解调器控制寄存器(MCR) 138
7.2.9线状态寄存器(LSR) 138
7.2.10调制解调器状态寄存器(MSR) 139
7.3将通信端口初始化 140
7.4调制解调器 142
7.5编写一个终端程序 143
7.5.1双工考虑 143
7.5.3支持函数 144
7.5.2控制程序Term.c 144
7.6使用term.c 151
7.7直接访问UART 151
7.7.1汇编语言 152
7.7.2 C语言 152
7.7.3 BASIC语言 152
7.7.4 Pascal语言 152
7.8修改Term.c 152
7.9回送检测 154
7.10评价串行I/O设备 155
7.11小结 155
第三部分 磁盘、目录和文件 159
第8章磁盘 159
8.1磁盘的内部结构 159
8.1.1分区表 160
8.1.2引导记录 163
8.1.3文件分配表(FAT) 166
8.2.1驱动器信息 172
8.2利用磁盘功能 172
8.2.2格式化磁盘 177
8.3小结 183
第9章 目录和文件 184
9.1磁盘目录 184
9.1.1根目录 185
9.1.2目录项 186
9.1.3子目录 190
9.1.4卷标 190
9.2什么是文件 191
9.3 DOS处理文件的方式 191
9.3.1标准文件控制块 192
9.3.2扩展的文件控制 192
9.3.3基本的FCB文件处理 193
9.3.4 什么时候使用FCB功能 193
9.3.6基本的句柄文件处理技术 194
9.3.5句柄功能 194
9.3.7何时使用句柄功能 195
9.3.8练习:目录搜索 195
9.4小结 199
第四部分 内存管理及其它 203
第10章程序和内存管理 203
10.1内存的工作方式 204
10.2内存管理 207
10.2.1压缩程序内存 209
10.2.2获得更多的内存 210
10.3扩充内存 211
10.3.1确定扩充内存的有效性 211
10.3.2使用扩充内存 213
10.4扩展内存 217
10.4.1确定扩展内存的有效性 217
10.4.2使用扩展内存 218
10.5.1 EXEC功能 245
10.5程序执行 245
10.5.2程序退出 249
10.5.3潜在的EXEC问题 249
10.5.4往DOS中输入命令 250
10.5.5替换DOS的内部命令 251
10.5.6为什么有些EXE文件不能被转换成COM文件 252
10.5.7程序段前缀(PSP) 252
10.6内存常驻软件的编程 254
10.7小结 256
第11章中断处理程序 257
11.1什么是中断 257
11.2中断的工作方式 259
11.3 Intel 8086系列的中断类型 259
11.3.1内部硬件中断 260
11.3.2外部硬件中断 260
11.3.3软件中断 261
11.5获取和设置中断向量 262
11.4 中断向量 262
11.6什么时候必须写一个中断处理程序? 263
11.7编写Ctrl-C处理程序 264
11.8编写一个关键出错处理程序 270
11.9 TSR综述 294
11.10 TSR的中断基础 296
11.10.1键盘中断 296
11.10.2 InDOS标志、DOSOK中断和定时器中断 296
11.11 小结 302
第12章设备驱动程序 304
12.1驱动程序的类型 305
12.1.1字符设备驱动程序 305
12.1.2块设备驱动程序 305
12.2设备驱动程序的工作方式 306
12.3设备驱动程序的结构 308
12.3.1 设备头 309
12.3.2策略例程 312
12.3.3中断例程 314
12.4完整的驱动程序 328
12.4.1汇编驱动程序 331
12.4.2安装驱动程序 332
12.4.3调试驱动程序 332
12.5编一个实用的驱动程序 333
12.6使用设备驱动程序 334
12.7 小结 334
第13章其它杂项功能 336
13.1 DOS版本信息 336
13.2 设备信息 339
13.3 日期和时间功能 341
13.4扩展的出错处理 345
13.5未公开的功能 349
13.6小结 350
14.1.1 中断号 353
14.1怎样介绍各个服务 353
第五部分 参考手册 353
第14章参考手册概述 353
14.1.2功能号 354
14.1.3子功能号 354
14.1.7调用寄存器 355
14.2详细的功能总结 355
14.1.9注释 355
14.1.8返回寄存器 355
14.1.6描述 355
14.1.5用途 355
14.1.4版本的有效性 355
第15章BIOS参考手册 371
第16章DOS参考手册 470
16.1怎样调用DOS服务 470
16.2可重入性 470
16.3保留的功能 471
16.5 DOS服务 472
16.4未公开的功能 472
第17章鼠标参考手册 649
17.1 鼠标的功能 649
17.2鼠标驱动程序的EGA寄存器接口 677
第18章EMS参考手册 682
第19章XMS参考手册 721
第20章DPMI参考手册 731
第21章任务切换参考手册 780
21.1数据结构 780
21.2通报功能 784
21.3服务功能 789
第22章DoubleSpace参考手册 794
22.1 CVF结构 794
22.2 API功能 795
附录A ASCII字符集 799
B.1中断表 806
附录B选中的内存位置 806
B.2 BIOS数据区 808
附录C一种标准的TSR标识技术 811
C.1用户参数块 812
C.2功能00h(检查安装) 813
C.3功能01h(返回用户参数指针) 814
C.4其它TesSeRact功能 815
D.1未公开的DOS功能的种类 816
附录D保留的DOS功能 816
D.2覆盖范围 817
D.3使用功能52h——表中表 818
D.4小结 855
附录E支持资源清单 856
E.1硬件 856
E.2 MS-DOS和BIOS编程 856
E.3编程语言 857
E.4一般编程技术 858