第一章 PC系列和PS/2系列剖析 1
1.1 微处理器 3
1.1.1 8088微处理器 4
1.1.2 8086微处理器 4
1.1.3 80286微处理器 4
1.1.4 80386微处理器 5
1.1.5 数学协处理器 5
1.2 支撑片子 6
1.2.1 可编程序中断控制器 6
1.2.2 DMA控制器 6
1.2.3 时钟发生器 6
1.3 链接部件:总线 7
1.2.4 可编程序间隔定时器 7
1.2.5 视频控制器 7
1.2.6 输入/输出控制器 7
1.3.1 地址总线 8
1.3.2 数据总线 8
1.4 存储器 9
1.3.3 微通道结构 9
1.4.1 CPU地址空间 9
1.4.2 系统存储器映象 10
1.5 设计思想 11
目录 11
导言 11
第二章 输入和输出 12
2.1 8086如何通讯 15
2.1.1 8086数据格式 15
2.2 8086寻址方式 16
2.2 1 段寻址 17
2.2.2 80286和80386保护方式寻址 17
2.2.3 寻址兼容性 18
2.3 8086寄存器 18
2.3.1 便笺式寄存器 19
2.3.2 段寄存器 20
2.3.4 标志寄存器 21
2.3.3 偏移寄存器 21
2.3.5 寄存器寻址 23
2.3.6 寄存器使用规则 24
2.4 8086 I/O端口的使用 25
2.5 8086中断的使用 26
2.5.1 软件中断 26
2.5.2 硬件中断 27
第三章 ROM软件 28
3.1 启动ROM 28
3.2 ROM BIOS 29
3.2.1 中断向量 30
3.2.2 关键的低内存地址 34
3.2.3 ROM版本和机器标志 40
3.3 ROM BASIC 42
3.4 ROM扩展 42
3.5 注释 43
第四章 显示器基础 44
4.1 显示器子系统 44
4.1.1 存储器和显示器子系统 45
4.1.2 创建屏幕图象 45
4.2 显示器显示方式 46
4.2.1 显示器方式控制 48
4.2.2 显示分辨率 49
4.3 颜色的使用 50
4.3.1 颜色抑制方式 52
4.3.2 文本和图形方式下的颜色 53
4.4 显示存储区的内部结构 56
4.4.1 文本方式下的显示页 56
4.4.2 图形方式下的显示页 58
4.4.3 在文本和图形方式下显示字符 58
4.5 显示器的显示控制 61
4.5.1 硬件直接控制 61
4.6 兼容性的考虑 62
第五章 磁盘的基本知识 65
5.1 磁盘数据映射 65
5.1.1 数据存储 65
5.2 DOS磁盘格式 67
5.1.2 可引导盘 67
5.2.2 硬盘格式 68
5.2.1 软盘格式 68
5.3 磁盘的逻辑结构 69
5.4 DOS是如何组织磁盘的 70
5.5 逻辑结构详述 71
5.5.1 启动扇区 72
5.5.2 根目录 73
5.5.3 文件区 76
5.5.4 文件分配表 77
5.6 注释 79
5.6.1 防拷贝保护 80
6.1 键盘操作 81
第六章 键盘基础知识 81
6.1.1 按键和扫描码 82
6.1.2 和ROM BIOS通讯 84
6.1.3 翻译扫描码 84
6.1.4 直接输入ASCⅡ码 86
6.2 键盘数据格式 86
6.2.1 ASCⅡ键 86
6.2.2 特殊键 86
6.3 ROM BIOS键盘控制 88
6.3.5 触发键状态 89
6.3.4 键盘保持状态 89
6.3.3 Num Lock状态 89
6.3.2 Caps Lock状态 89
6.3.1 Insert状态 89
6.4 注释 90
第七章 时钟、计时器和声音的生成 91
7.1 时钟和计时器 91
7.1.1 CPU时钟 91
7.1.2 系统计时器 92
7.1.3 系统计时器节拍信号的使用 93
7.2 声物理学 94
7.3 计算机怎样发出声音 95
7.3.1 计时器芯片的声音控制 96
7.3.2 扬声器的直接控制 97
7.4 扬声器的音量和音质 98
7.5 实时时钟 99
7.5.1 使用日期和时间 99
7.5.2 设置闹钟 99
第八章 ROM BIOS基础 100
8.1 ROM BIOS基本原理 100
8.2 ROM BIOS服务中断 101
8.3 ROM BIOS服务操作特点 102
8.4 建立汇编语言接口 102
8.4.1 中断倒程的基本格式 104
8.5 高级BIOS接口 107
中断服务00H(十进制0):设置显示器方式 108
第九章 ROM BIOS显示器中断服务 108
9.1 对ROM BIOS显示器中断服务的访问 108
中断服务01H(十进制1):设置光标大小 109
中断服务02H(十进制2):设置光标位置 110
中断服务03H(十进制3):读取光标位置 110
中断服务04H(十进制4):读取光笔位置 110
中断服务05H(十进制5):设置当前显示页 111
中断服务06H(十进制6):窗口向上滚动 111
中断服务07H(十进制7):窗口向下滚动 112
中断服务08H(十进制8):读取字符和属性 112
中断服务09H(十进制9):写字符和属性 112
中断服务0AH(十进制10):写字符 113
中断服务0DH(十进制13):读象素 114
中断服务0BH(十进制11):设置4色调色板 114
中断服务0CH(十进制12):写象素 114
中断服务0EH(十进制14):以电传打字机方式写字符 115
中断服务0FH(十进制15):读取当前显示器方式 115
中断服务10H(十进制16):彩色调色板接口 116
中断服务11H(十进制17):字符发生器接口 118
中断服务12H(十进制18):“替换选择” 120
中断服务13H(十进制19):写字符串 121
中断服务1AH(十进制26):读/写显示合成码 122
中断服务1BH(十进制27):返回功能/状态信息 122
9.2 注释和例子 123
中断服务1CH(十进制28):存/取显示器状态 123
10.1 ROM BIOS磁盘服务 125
第十章 ROM BIOS磁盘服务 125
服务00H(十进制0):重置磁盘系统 126
服务01H(十进制1):取磁盘状态 126
服务02H(十进制2):读磁盘扇区 127
服务03H(十进制3):写磁盘扇区 128
服务04H(十进制4):检验磁盘扇区 128
服务05H(十进制5):格式化磁盘磁道 128
服务09H(十进制9):初始化硬盘参数表 130
服务0AH和0BH(十进制10和11):长读和长写 130
服务07H(十进制7):格式化PC/XT硬盘 130
服务08H(十进制8):取磁盘驱动器参数 130
服务06H(十进制6):格式化PC/XT硬盘磁道 130
服务0CH(十进制12):寻找柱面 131
服务0DH(十进制13):另一种重置硬盘方法 131
服务10H(十进制16):检验驱动器准备好 131
服务11H(十进制17):重校驱动器 131
服务15H(十进制21):取磁盘类型 131
服务16H(十进制22):软盘修改状态 131
服务1AH(十进制26):格式化ESDI单位 132
服务19H(十进制25):锁定磁头 132
10.2 磁盘基表 132
服务17H(十进制23):设置软盘类型 132
服务18H(十进制24):为格式设置介质类型 132
10.3 注释和例子 134
第十一章 ROM BIOS键盘服务 137
11.1 访问键盘服务 137
服务00H(十进制0):读下一键盘输入字符 137
服务01H(十进制1):报告字符是否准备好 137
服务02H(十进制2):取移位键状态 138
服务03H(十进制3):设置按键速率和延迟时间 138
服务05H(十进制5):键盘写 139
服务10H(十进制16):读扩展键盘 139
服务11H(十进制17):取扩展按键状态 139
11.2 注释和例子 140
服务12H(十进制18):取扩展移位键状态 140
第十二章 各种其他服务 142
12.1 RS-232串行通讯服务 142
服务00H(十进制0):初始化串行口 143
服务01H(十进制1):发送一字符 144
服务02H(十进制2):接收一字符 144
服务03H(十进制3):取串行口状态 144
服务04H(十进制4):初始化扩展串行口 145
服务05H(十进制5):控制扩展通讯口 145
12.2 各种系统服务 146
服务83H(十进制131):启动/取消间隔时钟 147
服务03H(十进制3):写磁带数据块 147
服务21H(十进制33):读/写PS/2 POST错误记录表 147
服务02H(十进制2):读磁带数据块 147
服务01H(十进制1):关闭磁带机马达 147
服务00H(十进制0):打开磁带机马达 147
服务84H(十进制132):读操纵杆输入 148
服务86H(十进制134):间隔等待 148
服务87H(十进制135):移动保护方式下的数据 148
服务88H(十进制136):取扩展内存容量 148
服务89H(十进制137):切换到保护方式 148
服务C0H(十进制192):取系统配置参数 149
服务C1H(十进制193):取ROM BIOS扩展数据段 149
服务C2H(十进制194):点设备接口 149
服务C3H(十进制195):启动/停止监视时钟 150
服务C4H(十进制196):选择可编程选项 151
12.3 ROMBIOS中断 151
服务4FH(十进制79):键盘中断 151
服务80H(十进制128):打开设备 152
服务81H(十进制129):关闭设备 152
服务82H(十进制130):程序终止 152
服务85H(十进制133):按Sys Req键 152
服务90H(十进制144):设备忙 153
服务91H(十进制145):中断完成 153
12.4 打印机服务 153
服务00H(十进制0):发送一字节到打印机 153
中断05H(十进制5):打印屏幕服务 154
12.5 其它服务 154
服务01H(十进制1):初始化打印机 154
服务02H(十进制2):取打印机状态 154
中断11H(十进制17):设备列表服务 155
中断12H(十进制18):存储器容量服务 155
中断18H(十进制24):加载ROM BASIC服务 156
中断19H(十进制25):加载引导程序服务 156
中断1AH(十进制26):日时钟服务 157
第十三章 ROM BIOS服务调用总汇 160
13.1 概要说明 160
13.2 详细列表 163
14.1.1 DOS:一个丰富的磁盘服务系统 192
14.1 使用DOS服务程序的双重性 192
第十四章 DOS基础知识 192
14.1.2 DOS和显示器:一种不协调的匹配 193
14.2 DOS版本的差异 193
14.3 磁盘格式化的考虑 195
14.4 说明 195
第十五章 DOS中断 196
15.1 五个主要的DOS中断 196
15.1.1 中断20H(十进制32):程序终止 196
15.1.2 中断21H(十进制33):所有DOS服务 197
15.1.3 中断25H和26H(十进制37和38):绝对磁盘读写 197
15.1.4 中断27H(十进制39):终止和驻留 199
15.2 多重中断 200
15.3 三个DOS地址中断 202
15.3.1 中断22H(十进制34):终止地址 202
15.3.2 中断23H(十进制35):Ctrl-C程序处理地址 202
15.3.3 中断24H(十进制36):严重错误处理地址 203
15.4 DOS空闲中断 206
15.5 程序段前缀(PSP) 206
15.5.1 PSP的内部结构 207
15.6 举例 209
第十六章 DOS功能调用(版本1) 212
16.1 中断21H功能:DOS版本1 212
功能01H(十进制1):带回送的字符输入 214
功能00H(十进制0):程序终止 214
功能02H(十进制2):字符输出 215
功能03H(十进制3):辅助输入 215
功能04H(十进制4):辅助输出 215
功能05H(十进制5):打印机输出 215
功能06H(十进制6):键盘/显示器直接输入/输出 215
功能07H(十进制7):无回送的直接键盘输入 216
功能08H(十进制8):无回送的键盘输入 216
功能09H(十进制9):字符串输出 216
功能0AH(十进制10):带缓冲的键盘输入 216
功能0FH(十进制15):打开文件 217
功能0DH(十进制13):清除磁盘缓冲区 217
功能0EH(十进制14):选择磁盘驱动器 217
功能0BH(十进制11):检查键盘状态 217
动能0CH(十进制12):清除键盘缓冲区,读键盘 217
功能10H(十进制16):关闭文件 218
功能11H(十进制17):搜索第一个匹配的文件目录 218
功能12H(十进制18):搜索下一个匹配的文件目录 218
功能13H(十进制19):删除文件 219
功能14H(十进制20):顺序读文件记录 219
功能15H(十进制21):顺序写文件记录 219
功能16H(十进制22):创建文件 219
功能1AH(十进制26):设置磁盘传输区域 220
功能1CH(十进制28):获取指定驱动器的信息 220
功能1BH(十进制27):获取缺省驱动器的信息 220
功能19H(十进制25):获取当前驱动器 220
功能17H(十进制23):修改文件名 220
功能21H(十进制33):读随机记录 221
功能22H(十进制34):写随机记录 221
功能23H(十进制35):获取文件大小 221
功能24H(十进制36):设置FCB随机记录字段 221
功能25H(十进制37):设置中断向量 221
功能26H(十进制38):创建新的程序段前缀 221
功能27H(十进制39):读取随机记录 222
功能28H(十进制40):写随机记录 222
功能29H(十进制41):分析文件名 222
功能2EH(十进制46):设置检测标志 223
功能2DH(十进制45):设置时间 223
功能2CH(十进制44):获取时间 223
功能2BH(十进制43):设置日期 223
功能2AH(十进制42):获取日期 223
16.2 文件控制块 224
16.2.1 FCB区域 224
16.2.2 扩展的FCB区域 226
16.3 实例 226
第十七章 DOS功能调用(版本2.0及其后版本) 228
17.1 DOS版本2和3中增加的部分 228
17.1.1 连贯的错误码 228
17.1.2 ASCIIZ串 228
17.1.3 文件句柄 229
17.1.4 可安装的驱动设备 230
17.2 中断21H功能: DOS版本2.0和其后的版本 230
功能2FH(十进制47):获取DTA地址 230
功能30H(十进制48):获取DOS版本号 232
功能31H(十进制49):终止和驻留 233
功能33H(十进制51):获取/设置Ctrl-C标志 233
功能35H(十进制53):获取中断向量 233
功能36H(十进制54):获取磁盘自由空间 234
功能38H(十进制56):获取/设置国家有关信息 234
功能3BH(十进制59):改变当前目录 236
功能3CH(十进制60):创建文件 236
功能39H(十进制57):创建目录 236
功能3AH(十进制58):删除目录 236
功能3DH(十进制61):打开句柄 237
功能3EH(十进制62):关闭句柄 238
功能3FH(十进制63):从文件或设备中读 238
功能40H(十进制64):写入文件或设备中 238
功能41H(十进制65):删除文件 238
功能42H(十进制66):移动文件指针 239
功能43H(十进制67):获取/设置文件属性 239
功能44H(十进制68): IOCTL——设备输入/输出控制 240
功能45H(十进制69):复制句柄 244
功能46H(十进制70):强迫复制文件句柄 245
功能4AH(十进制74):重定内存块大小 246
功能4BH(十进制75):EXEC——装载并执行一程序 246
功能47H(十进制71):获取当前目录 246
功能49H(十进制73):释放内存块 246
功能48H(十进制72):分配内存块 246
功能4CH(十进制76):带返回码终止 248
功能4DH(十进制77):获取返回码 248
功能4EH(十进制78):搜寻第一个匹配文件 248
功能4FH(十进制79):搜寻下一个文件 249
功能54H(十进制84):获取校验标志 249
功能56H(十进制86):修改文件名 249
功能57H(十进制87):获取/设置文件日期和时间 250
功能58H(十进制88):获取/设置内存分配策略 250
功能59H(十进制89):获取扩展的错误信息 251
功能5AH(十进制90):创建临时文件 254
功能5BH(十进制91):创建新文件 255
功能5CH(十进制92):封锁/开放文件区 255
功能5EH(十进制94):网络机器名和打印机设置 256
功能5FH(十进制95):网络重定向 256
功能62H(十进制98):获取PSP地址 257
功能65H(十进制101):获取扩充国家有关信息 257
功能66H(十进制102):获取/设置全局码页 259
功能67H(十进制103):设置句柄计数 259
功能68H(十进制104):提交文件 259
第十八章 DOS系统调用总汇 260
18.1 概要说明 260
18.2 详细列表 263
第十九章 程序构成 279
19.1 可执行程序的结构 279
19.1.1 内存映象 279
19.1.2 寄存器的使用 280
19.1.3 存储模式 280
19.2 子例程接口 281
19.3 连接程序模块 282
19.4 LINK的使用 285
19.4.1 自含程序的连接 285
19.4.2 连接一个程序和库 285
19.4.3 若干目标文件的连接 286
20.1 语言特性 287
第二十章 编程语言 287
20.2 汇编语言 288
20.2.1 逻辑结构 288
20.2.2 掌握有关的接口规约 288
20.2.3 编写和链接汇编程序 290
20.3 C语言 291
20.3.1 参数传递 292
20.3.2 内存模式的变化 293
20.3.3 命名的规则 294
20.3.4 数据表示 295
20.4 解释BASIC 295
20.4.1 子程序接口 295
20.4.2 数据表示法 297
20.5 编译BASIC 299
20.5.1 子程序接口 299
20.5.2 数据表示 300
20.6 Turbo Pascal 300
20.6.1 子程序接口 301
20.6.2 数据表示 302
20.7 注释 303
附录A 可装配的设备驱动器 305
附录B 十六进制数运算 309
附录C 字符集与文件格式 316
附录D DOS版本 327
后记 335