内容简介
《MS-DOS百科全书》概述
第一篇 MS-DOS操作系统的开发
MS-DOS的发展史
Microsoft公司和BASIC语言
从纸带到磁盘
M-DOS操作系统
CP/M操作系统
8086微处理器
86-DOS操作系统
IBM公司
转折点
MS-DOS的形成
MS-DOS版本1
新功能
性能
易用性
市场
更名操作系统
开发者和MS-DOS
MS-DOS版本2
文件系统
可安装的设备驱动程序
假脱机打印程序
其它的详细变更处和新的MS-DOS
2.1版和2.5版本
IBM的关注
IBM以外的情况
各客户的不同版本
软件问题
MS-DOS版本3
3.0版本
3.1版本
解决网络上的问题
3.2版本
MS-DOS的未来
第二篇 MS-DOS环境下的编程
MS-DOS的结构
第一章 MS-DOS入门
1.1 MS-DOS系统的组成
1.1.1 操作系统装入程序
1.1.2 MS-DOS BIOS
1.1.3 MS-DOS内核
1.1.4 用户接口
1.1.5 服务程序
1.1.6 MS-DOS的版本
1.2 MS-DOS的工作条件
1.2.1 所需的硬件
1.3 小结
第二章 MS-DOS的构成要素
2.1 主要构成要素
2.1.1 MS-DOS BIOS
2.1.2 MS-DOS内核
2.1.3 MS-DOS外壳
2.2 MS-DOS的装入过程
2.2.1 ROMBIOS、POST、引导
2.2.2 MS-DOS系统的初始化(SYSINIT)
2.2.3 外壳的启动
第三章 MS-DOS的外部存储设备
3.1 MS-DOS的磁盘结构
3.1.1 块设备的物理设备格式
3.1.2 分区的格式
3.1.3 文件系统的格式
3.2 其他的MS-DOS存储设备
MS-DOS环境下的编程
第四章 应用程序的结构
4.1 .EXE程序
4.1.1 向.EXE程序传递控制
4.1.2 .EXE程序的结束
4.1.3 .EXE文件的结构
4.1.4 .EXE程序的读入
4.1.5 .EXE程序结构的控制
4.1.6 Microsoft的存储模式说明
4.1.7 .EXE文件标题的修改
4.1.8 使用DEBUG修补.EXE程序
4.1.9 .EXE程序的要点
4.2 .COM程序
4.2.1 向.COM程序传递控制
4.2.2 ..COM程序的结束
4.2.3 .COM程序的编制
4.2.4 使用DEBUG实用程序修补.COM程序
4.2.5 .COM程序的要点
4.3 不同点的概要
第五章 字符设备的输入输出
5.1 发展过程
5.2 字符设备的输入输出
5.3 MS-DOS基本字符设备
5.3.1 标准设备
5.3.2 RAM状态和COOKED状态
5.3.3 键盘
5.3.4 显示器
5.3.5 串行通信端口
5.3.6 并行端口和打印机
5.4 IOCTL
5.4.1 IOCTL程序举例
第六章 中断驱动通信
6.1 通信程序的目的
6.2 简单MS-DOS功能的使用
6.3 内装式硬件
6.3.1 调制解调器
6.3.2 串行端口
6.3.3 8250 UART的结构
6.4 设备驱动程序
6.5 两种实现方法
6.5.1 典型的方法:由单个程序实现
6.5.2 由通信用设备驱动程序实现
6.5.3 两种方法的比较
6.6 设备驱动程序程序包
6.6.1 设备驱动程序:COMDVR.ASM
6.6.2 简单的调制解调机理
6.6.3 驱动程序状态实用程序:CDVUTL.C
6.7 典型的方法
6.7.1 硬件ISR模块
6.7.2 异常处理模块
6.7.3 图象显示器模块
6.7.4 高性能终端信真程序CTERM.C
第七章 文件与记录的管理
7.1 历史发展过程
7.2 句柄功能的使用方法
7.2.1 错误处理与句柄功能
7.2.2 文件的生成
7.2.3 打开已存文件
7.2.4 文件的关闭
7.2.5 用句柄读和写
7.2.6 文件指针的移动
7.2.7 其它句柄功能
7.3 FCB功能的使用方法
7.3.1 FCB的结构
7.3.2 FCB功能与PSP
7.3.3 文件名分析
7.3.4 错误处理与FCB功能
7.3.5 文件生成
7.3.6 文件打开
7.3.7 文件关闭
7.3.8 利用FCB对文件的读和写
7.3.9 利用FCB对文件的其他操作
7.4 小结
第八章 磁盘目录与卷标
8.1 MS-DOS目录的逻辑结构
8.1.1 目录检索
8.1.2 目录项增补与删除
8.1.3 当前目录
8.2 目录的格式
8.2.1 目录入口的格式
8.3 卷标
8.4 对MS-DOS目录功能的支持
8.4.1 目录检索
8.4.2 目录入口信息的取得
8.4.3 改变目录项的内容
8.4.4 目录的生成与删除
8.4.5 指定当前目录
8.4.6 程序举例:文件检索
8.4.7 程序举例:改变卷标
第九章 内存管理
9.1 常规内存
9.1.1 MS-DOS对常规内存管理的支持
9.1.2 内存管理功能的使用方法
9.2 扩展内存
9.2.1 扩展内存管理程序EMM
9.3 扩充内存
9.4 小结
第十章 MS-DOS EXEC功能
10.1 EXEC功能的操作
10.2 使用EXEC功能装入程序的方法
10.2.1 内存的释放(子程序的执行)
10.2.2 参数的准备
10.2.3 子程序的执行
10.2.4 子程序返回码的检查
10.2.5 用EXEC功能执行COMMAND.COM
10.2.6 父程序和子程序举例
10.3 使用EXEC功能装入覆盖的方法
10.3.1 内存的释放(覆盖的执行)
10.3.2 覆盖参数的准备
10.3.3 覆盖的装入和执行
10.4.4 覆盖实则
定制MS-DOS系统
第十一章 驻留结束程序
11.1 驻留结束实用程序的结构
11.1.1 键盘输入
11.1.2 ROM BIOS中断处理
11.1.3 硬件中断处理
11.1.4 MS-DOS的功能处理
11.2 用于TSR的MS-DOS支持
11.2.1 驻留结束功能
11.2.2 中断向量的设置和获取
11.2.3 PSP地址的设置和获取
11.2.4 扩充错误码的设置和获取
11.2.5 DTA地址的设置和获取
11.2.6 INT28H(空载中断)
11.3 对MS-DOS状态的了解
11.3.1 MS-DOS的内部堆栈
11.3.2 致命的错误标志
11.3.3 InDOS标志
11.4 多重中断
11.5 TSR程序的举例
11.5.1 HELLO.ASM
11.5.2 SNAP.ASM
第十二章 例外(异常)处理程序
12.1 概述
12.2 Ctrl-C处理程序
12.2.1 Ctrl-C处理程序的编写
12.2.2 Ctrl-C处理中的注意事项
12.3 致命错误处理程序
12.3.1 致命错误处理程序的构成
12.3.2 致命错误的处理
12.3.3 致命错误处理程序的建立
12.4 由硬件产生的例外(异常)中断
12.4.1 除法运算错误(1NT 00H)
12.4.2 单步中断(INT 01H)
12.4.3 非屏蔽中断(NMI)(INT 02H)
12.4.4 断点中断的发生(INT 03H)
12.4.5 溢出中断的发生(INT 04H)
12.4.6 用BOUMD指令检测超限(INT 05H)
12.4.7 执行未定义的指令(INT 06H)
12.5 扩充错误信息
12.5.1 功能59H与以前的功能调用
12.5.2 功能59H与新的功能调用
第十三章 硬件中断处理程序
13.1 硬件中断的种类
13.1.1 8086系列的中断优先顺序
13.1.2 中断服务程序
13.2 可屏蔽中断的特性
13.2.1 不可预测性
13.2.2 立即处理的必要性
13.3 可屏蔽中断的控制
13.3.1 8259A可编程中断控制器
13.3.2 IRQ的级别
13.4 硬件中断的编程
13.4.1 置换处理程序举例
13.4.2 辅助处理程序
13.5 小结
第十四章 MS-DOS过滤程序的编写法
14.1 为过滤程序提供的系统功能
14.2 过滤程序的动作
14.3 过滤程序的构造
14.4 作为过滤程序子进程的使用方法
第十五章 可安装的设备驱动程序
15.1 常驻驱动程序与可安装的驱动程序
15.1.1 字符设备驱动程序
15.1.2 块设备驱动程序
15.2 MS-DOS设备驱动程序的结构
15.2.1 设备标题
15.2.2 策略例程(strat)
15.2.3 中断例程(Intr)
15.3 典型的输入输出请求的处理
15.4 设备驱动程序的描述
15.4.1 字符设备驱动程序举例:TEMPLATE
15.4.2 块设备驱动程序举例:TINYDISK
OS/2和Windows
第十六章 向MSOS/2应用程序的移植
16.1 有关硬件的问题
16.1.1 与保护模式的兼容性
16.1.2 系列API
16.1.3 线性存储器和分段存储器
16.1.4 CPU的速度
16.1.5 程序的时间测算
16.1.6 BIOS
16.1.7 特殊处理
16.2 关于操作系统的问题
16.2.1 文件名
16.2.2 MS-DOS功能调用
16.2.3 查找
16.2.4 错误代码
16.2.5 关于多任务
16.2.6 其他提示
16.3 小结
第十七章 Windows
17.1 程序的分类
17.2 Windows的显示
17.2.1 窗口的元素
17.2.2 对话框
17.3 MS-DOS窗口
17.4 其他Windows的程序
17.5 Windows的结构
17.5.1 Windows模块
17.5.2 库与程序
17.6 内存管理
17.7 Windows程序的结构
17.7.1 Microsoft Windows软件开发工具包
17.7.2 Wnidows程序的构成要素
17.7.3 Wnidows程序的创建
17.7.4 程序的初始化
17.7.5 Windows的消息系统
17.7.6 Windows的多任务
17.8 图形设备接口(GDI)
17.8.1 设备描述表(DC)
17.8.2 不依赖设备的编程
17.8.3 设备描述表的属性
17.8.4 映象模式
17.8.5 绘画函数
17.8.6 画笔的光栅操作
17.8.7 位块的传送
17.8.8 文本与字模
17.8.9 图元文件(Meta File)
17.9 数据共享与数据交换
17.9.1 在事例之间共享局部数据
17.9.2 Windows的剪辑板
17.9.3 动态数据交换(DDE)
17.10 国际化
编程工具
第十八章 在MS-DOS环境下调试程序
18.1 样板程序
18.2 调试用工具和技巧
18.2.1 点检和观察
18.2.2 测试工具
18.2.3 软件调试监控程序
18.2.4 硬件调试支持设备
18.3 小结
第十九章 目标模块
19.1 目标模块的使用方法
19.1.1 目标模块的内容
19.1.2 在目标模块中使用的术语
19.2 目标模块的结构
19.2.1 目标记录的类型
19.2.2 目标记录的顺序
19.2.3 典型的目标模块
19.2.4 目标记录间的访问
19.3 Microsoft 8086目标记录格式
19.4 80H THEADR——处理系统标题记录
19.4.1 记录格式
19.4.2 在目标模块中的位置
19.4.3 THEADR记录举例
19.5 88H COMENT——注释记录
19.5.1 记录格式
19.5.2 在目标模块中的位置
19.5.3 COMENT记录举例
19.6 8AH MODENE——模块结束记录
19.6.1 记录格式
19.6.2 在目标模块中的位置
19.6.3 MODEND记录举例
19.7 8CH EXTDEF——外部名定义记录
19.7.1 记录格式
19.7.2 在目录模块中的位置
19.7.3 EXTDEF记录举例
19.8 8EH TYPDEF——类型定义记录
19.8.1 记录格式
19.8.2 在目标模块中的位置
19.8.3 TYPDEF记录举例
19.9 90H PUBDEF——公用名定义记录
19.9.1 记录格式
19.9.2 在目标模块中的位置
19.9.3 PUBDEF记录举例
19.10 94H LINNUM——行序号记录
19.10.1 记录格式
19.10.2 在目标模块中的位置
19.10.3 LINNUM记录举例
19.11 96H LNAMES——符号一览表记录
19.11.1 记录格式
19.11.2 在目标模块中的位置
19.11.3 LNAMES记录举例
19.12 98H SEGDEF——段定义记录
19.12.1 记录格式
19.12.2 在目标模块中的位置
19.12.3 SEGDEF记录举例
19.13 9AH GRPDEF——组定义记录
19.13.1 记录格式
19.13.2 在目标模块中的位置
19.13.3 GRPDEF记录举例
19.14 9CH FIXUPP——安装记录
19.14.1 记录格式
19.14.2 在目标模块中的位置
19.14.3 FIXUPP记录举例
19.15 0A0H LEDATA——逻辑列举数据记录
19.15.1 记录格式
19.15.2 在目标模块中的位置
19.15.3 LEDATA记录举例
19.16 0A2H LIDATA——逻辑重复数据记录
19.16.1 记录格式
19.16.2 在目标模块中的位置
19.16.3 LIDATA记录举例
19.17 0B0H COMDEF——共用名定义记录
19.17.1 记录格式
19.17.2 在目标模块中的位置
19.17.3 COMDEF记录举例
第二十章 Microsoft的目标连接程序LinKer
20.1 目标文件、目标库和LIB实用程序
20.2 LINK的处理
20.2.1 可执行文件的构成
20.2.2 重定位和连接
20.3 目标模块的顺序
20.3.1 可执行文件中的段顺序
20.3.2 解决访问的顺序
20.3.3 可执行文件的名称
20.4 段顺序和段组合类型
20.4.1 段的类
20.4.2 段的配置
20.4.3 段组
20.5 LINK的处理内容
20.5.1 第一遍扫描
20.5.2 第二遍扫描
20.6 用LINK提高内存使用效率
20.6.1 TSR中段的顺序
20.6.2 利用组共享段寄存器
20.6.3 未初始化的数据段
20.6.4 覆盖
20.6.5 DGROUP
20.7 小结
第三篇 用户命令
前言
ANSI.SYS
APPEND
ASSIGN
ATTRIB
BACKUP
BATCH
AUTOEXEC.BAT
ECHO
FOR
GOTO
IF
PAUSE
REM
SHIFT
BREAK
CHDIR/CD
CHKDSK
CLS
COMMAND
COMP
CONFIG.SYS
BREAK
BUFFERS
COUNTRY
DEVICE
DRIVPARM
FCBS
FILES
LASTDRIVE
SHELL
STACKS
COPY
CTTY
DATE
DEL/ERASE
DIR
DESKCOMP
DISKCOPY
DRIVER.SYS
EDLIN
〈行号〉
A
C
D
E
I
L
M
P
Q
R
S
T
W
EXIT
FC
FDISK
FIND
FORMAT
GAFTABL
GRAPHICS
JOIN
KEYB
LABEL
MKDIR/MD
MODE(设置设备)
MODE(设置打印机)
MODE(设置显示方式)
MODE(设置串行口)
MODE(重定向打印机)
MORE
PATH
PROMPT
RAMDRIVE.SYS
RECOVER
RENAME/REN
REPLACE
RESTORE
RMDIR/RD
SELECT
SET
SHARE
SORT
SUBST
SYS
TINE
TREE
TYPE
VDISK.SYS
VER
VIRIFY
VOL
XCOPY
第四篇 编程设计实用工具软件
前言
CREF
EXE2BIB
EXEMOD
EXEPACK
LIB
LINK
MAKE
MAPSYM
AMSM
DEBUG
A
C
D
E
F
G
H
I
L
M
N
O
P
Q
R
S
T
U
W
SYMDEB
A
BC
BD
BE
BL
BP
C
D
DA
DB
DD
DL
DS
DT
DW
E
EA
EB
ED
EL
ES
ET
EW
F
G
H
I
K
L
M
N
O
P
Q
R
S
S+
S-
S&
T
U
V
W
X
XO
Z
〈
〉
=
{
}
~
\
?
!
*
Code View
第五篇 系统调用
前言
版本间的差异
各条目的形式
功能分类目录
Interrupt 20H(32)
Interrupt 21H(33)
Function 00H(0)
Function 01H(1)
Function 02H(2)
Function 03H(3)
Function 04H(4)
Function 05H(5)
Function 06H(6)
Function 07H(7)
Function 08H(8)
Function 09H(9)
Function 0AH(10)
Function 0BH(11)
Function 0CH(12)
Function 0DH(13)
Function 0EH(14)
Function 0FH(15)
Function 10H(16)
Function 11H(17)
Function 12H(18)
Function 13H(19)
Function 14H(20)
Function 15H(21)
Function 16H(22)
Function 17H(23)
Function 19H(25)
Function 1AH(26)
Function 1BH(27)
Function 1CH(28)
Function 21H(33)
Function 22H(34)
Function 23H(35)
Function 24H(36)
Function 25H(37)
Function 26H(38)
Function 27H(39)
Function 28H(40)
Function 29H(41)
Function 2AH(42)
Function 2BH(43)
Function 2CH(44)
Function 2DH(45)
Function 2EH(46)
Function 2FH(47)
Function 30H(48)
Function 31H(49)
Function 33H(51)
Function 34H(52)
Function 35H(53)
Function 36H(54)
Function 37H(55)
Function 38H(56)
Function 39H(57)
Function 3AH(58)
Function 3BH(59)
Function 3CH(60)
Function 3DH(61)
Function 3EH(62)
Function 3FH(63)
Function 40H(64)
Function 41H(65)
Function 42H(66)
Function 43H(67)
Function 44H(68)
Subfunction 00H
Subfunction 01H
Subfunction 02H,03H
Subfunction 04H,05H
Subfunction 06H,07H
Subfunction 08H
Subfunction 09H
Subfunction 0AH
Subfunction 0BH
Subfunction 0CH
Subfunction 0DH
Minor Code 40H
Minor Code 60H
MinorCode 41H,61H
Minor Code 42H,62H
Subfunction 0EH,0FH
Function 45H(69)
Function 46H(70)
Function 47H(71)
Function 48H(72)
Function 49H(73)
Function 4AH(74)
Function 4BH(75)
Function 4CH(76)
Function 4DH(77)
Function 4EH(78)
Function 4FH(79)
Function 54H(84)
Function 56H(86)
Function 57H(87)
Function 58H(88)
Function 59H(89)
Function 5AH(90)
Function 5BH(91)
Function 5CH(92)
Function 5EH(94)
Subfunction 00H
Subfunction 02H,03H
Function 5FH(95)
Subfunction 02H
Subfunction 03H
Subfunction 04H
Function 62H(98)
Function 63H(99)
Interrupt 22H(34)
Interrupt 23H(35)
Interrupt 24H(36)
Interrupt 25H(37)
Interrupt 26H(38)
Interrupt 27H(39)
Interrupt 2FH(47)
附录
附录A MS-DOS 3.3版本
3.3版本中用户级的变化
3.3版本中编程时的注意事项
附录B 严重错误代码
附录C 扩充错误代码
AX——扩充错误代码
BH——错误种类
BL——错误的处置
CH——错误产生位置
处置过程
附录D ASCII字符集和IBM扩充字符集
附录E EBCDIC字符集
附录F ANSI.SYS键代码和扩充键代码
附录G FCB结构
附录H PSP结构
附录I 8086/8088/80286/80386指令系统
8086/8088指令系统
80286指令系统
80386指令系统
附录J 一般MS-DOS文件扩展名
附录K New EXE文件头格式
以前的可执行文件头
新的可执行文件头
附录L Intel十六进制目标文件格式
附录M 8086/8088软件兼容性
附录N 目标模块转储实用工具程序
附录O IBM PC BIOS调用
INT10H
Function 00H
Function 01H
Function 02H
Function 03H
Function 04H
Function 05H
Function 06H
Function 07H
Function 08H
Function 09H
Function 0AH
Function 0BH
Function 0CH
Function 0DH
Function 0EH
Function 0FH
Function 13H
INT11H
INT12H
INT13H
Function 00H
Function 01H
Function 02H
Function 03H
Function 04H
Function 05H
Function 08H
Function 09H
Function 0AH
Function 0BH
Function 0CH
Function 0DH
Function 10H
Function 11H
Function 14H
Function 15H
Function 16H
Function 17H
INT14H
Function 00H
Function 01H
Function 02H
Function 03H
INT15H
Function 00H
Function 01H
Function 02H
Function 03H
INT16H
Function 00H
Function 01H
Function 02H
INT17H
Function 00H
Function 01H
Function 02H
INT18H
INT19H
INT1AH
Function 00H
Function 01H
Function 02H
Function 03H
Function 04H
Function 05H
Function 06H
Function 07H