目录 1
第一章 概述 1
1.1 微型计算机的发展过程 1
1.2 微型计算机的特点 2
1.3 计算机系统 3
1.3.1 硬件子系统 3
1.3.2 软件子系统 5
1.4 计算机语言 6
1.4.1 机器语言 7
1.4.2 汇编语言 7
1.4.3 通用语言(高级语言) 9
习题 10
第二章 计算机运算基础 11
2.1 进位计数制 11
2.2 数制之间的转换 12
2.3 二进制编码 16
2.3.1 二进制编码的十进制数 16
2.3.2 字符的编码 17
2.4 带符号数的机内表示 18
2.5 二进制运算 21
2.5.1 补码的加减法运算 21
习题 23
2.5.2 逻辑运算 23
第三章 微型处理机的结构 25
3.1 微型处理机的结构 25
3.1.1 8086/8088微型处理机的结构 25
3.1.2 8086/8088寄存器和标志 26
3.2 存储器 29
3.2.1 存储器的分段结构 29
3.2.2 实际地址的产生 30
3.3 寻址方式 31
3.3.1 操作数的种类 32
3.3.2 寻址方式 32
3.3.3 段更换和段跨越 34
3.3.4 有效地址的计算时间 35
3.4 8086/8088指令系统 35
*3.5 86系列微处理器之间的差异 36
习题 38
第四章 汇编语言 39
4.1 汇编语言的语句格式 39
4.1.1 字符集 39
4.1.2 汇编语句格式 39
4.2 汇编语言中数据的表示方法 42
4.2.1 数据在机内的表示方法和范围 42
4.2.2 汇编语言中数据书写形式 44
4.3 运算符号 45
4.3.1 算术运算符 45
4.3.2 逻辑运算符 45
4.3.3 关系运算符 45
4.3.4 分析算符 45
4.3.5 组合算符 47
4.3.6 字节分离算符LOW和HIGH 47
4.3.7 记录专用算符 48
4.4 伪指令(汇编命令) 48
4.4.1 符号定义伪指令 48
4.4.2 数据定义伪指令 49
4.4.3 段定义伪指令 52
4.4.4 其它伪指令 54
4.5 汇编语言的上机过程 56
习题 60
第五章 顺序结构程序设计 61
5.1 程序设计的步骤 61
5.2 流程图的应用 63
5.3 程序的基本控制结构 63
5.4 数据传送指令 65
5.5 算术运算指令 68
5.5.2 减法运算指令 69
5.5.1 加法运算指令 69
5.5.3 乘法运算指令 71
5.5.4 除法运算指令 72
5.6 逻辑操作指令 73
5.7 移位操作指令 75
5.8 状态标志位操作指令 75
5.9 简单的I/O功能调用 76
5.10 顺序结构程序举例 77
习题 84
第六章 分支结构程序设计 87
6.1 分支结构程序的引出 87
6.2.1 无条件转移指令JMP(Jump) 88
6.2 转移指令 88
6.2.2 条件转移指令 89
6.3 分支结构程序设计 90
6.4 多分支结构程序设计 95
习题 98
第七章 循环结构程序 101
7.1 循环结构程序的提出 101
7.2 循环结构程序的组成 103
7.3 循环控制指令 104
7.4.1 数据串基本操作指令 106
7.4 数据串操作指令 106
7.4.2 重复前缀 109
7.5 循环程序的控制方法 110
7.5.1 计数法 110
7.5.2 寄存器终值控制法 111
7.5.3 条件控制法 112
7.6 单重循环程序举例 114
7.7 多重循环程序设计 117
7.8 循环程序的效率 119
习题 121
8.1 子程序的引出 125
第八章 子程序设计 125
8.2 子程序(过程)定义伪指令 126
8.3 调用和返回指令 127
8.4 子程序设计方法 130
8.4.1 现场的保护和恢复 130
8.4.2 子程序说明文件 130
8.4.3 主程序与子程序之间的参数传递 131
8.5 子程序嵌套 138
8.6 递归子程序 141
8.8 程序的连接 144
8.8.1 程序连接伪指令 144
*8.7 可重入子程序 144
8.8.2 模块连接方法 146
习题 148
第九章 条件汇编与宏指令 152
9.1 条件汇编伪操作 152
9.2 宏伪操作 154
9.2.1 宏定义与宏结束伪操作命令 154
9.2.2 参数的使用 156
9.2.3 宏中的标号处理 158
9.2.4 宏嵌套 159
9.2.5 宏与子程序的区别 162
*9.3 重复块宏操作命令 163
*9.4 特殊宏操作命令 165
习题 167
第十章 算术运算与代码转换 168
10.1 多字节加减运算 168
10.2 多字节整数乘除运算 169
10.2.1 一般整数乘法运算 169
10.2.2 多字节整数乘法运算 170
10.2.3 一般整数除法运算 172
10.2.4 多字节整数除法运算 173
10.3.2 BCD码运算调整指令 178
10.3.1 BCD码运算规则 178
10.3 BCD码运算 178
10.3.3 非组合的BCD码运算 179
10.3.4 组合的BCD码加减运算 181
10.3.5 BCD码数据的符号表示方法及运算方法 182
10.4 浮点数据的表示方法 182
*10.5 浮点数加减运算 184
10.5.1 浮点数加法 184
10.5.2 浮点数减法 187
10.6.1 浮点数乘法 188
10.6.2 浮点数除法 188
*10.6 浮点数乘除运算 188
10.7 十进制数的ASCII码串转换为二进制定点数 189
10.8 二进制定点数转换为十进制数的ASCII码串 191
*10.9 实数的ASCII码串转换为浮点数 194
*10.10 浮点数据转换为十进制数的ASCII码串 194
10.10.1 浮点数转换为普通十进制数的ASCII码串 195
10.10.2 浮点数转换为科学表示法数的ASCII码串 195
习题 196
第十一章 列表与字符串操作 198
11.1 列表处理 198
11.1.1 列表的定义 198
11.2 记录与结构 199
11.1.2 列表的存储结构 199
11.2.1 记录 200
11.2.2 结构 203
11.3 列表的种类及其运算 205
11.3.1 插入 206
11.3.2 删除 207
11.3.3 排序 209
11.3.4 检索 214
*11.4 字符串处理 217
11.4.1 字符串的定义及表示方法 217
11.4.2 字符串的运算 218
习题 220
第十二章 输入输出与中断 223
12.1 输入输出指令 223
12.2 中断指令 224
12.3 外同步指令和空操作指令 225
12.4 CPU与外设间的数据传送 226
12.4.1 输入输出接口 226
12.4.2 CPU与外设之间的接口信号 227
12.4.3 CPU与外设之间的数据传送方式 228
12.5.2 中断系统的功能 229
12.5 中断系统概述 229
12.5.1 中断请求与中断源 229
12.5.3 中断响应 230
12.6 8086/8088的中断系统 231
12.6.1 外部中断 231
12.6.2 内部中断 233
12.6.3 中断向量表 234
12.7 8259A中断控制器及其程序设计 234
12.7.1 8259A的结构 235
12.7.2 8259A的程序设计 236
12.7.3 8259A在IBM PC系列机中的应用 239
12.8 中断程序设计方法 241
12.8.1 主程序设计 241
12.8.2 中断服务程序设计 241
12.8.3 中断服务程序设计中应注意的几个问题 242
12.9 IBM PC的BIOS调用及DOS功能调用 242
12.9.1 BIOS调用 243
12.9.2 DOS中断和功能调用 244
习题 248
*第十三章 磁盘操作及文件管理 250
13.1 磁盘结构 250
13.2.1 保留区(引导记录) 252
13.2 磁盘上的数据组织 252
13.2.2 文件分配表(FAT) 253
13.2.3 文件目录表(FDT) 255
13.3 磁盘I/O参数表及其用法 256
13.3.1 磁盘I/O参数表(BPB) 256
13.3.2 BPB表的用法 257
13.4 磁盘基数表及其用法 259
13.4.1 磁盘基数表 259
13.4.2 软盘基数表的用法 259
13.4.3 磁盘加密 266
13.5.1 计算机病毒的技术特征 267
13.5 计算机病毒的诊治 267
13.5.2 病毒的诊断 269
13.5.3 消毒免疫技巧 270
13.6 DOS文件管理 270
13.6.1 DOS文件结构 270
13.6.2 文件控制块FCB及其用法 271
13.6.3 DOS文件句柄功能及其用法 273
习题 276
第十四章 显示程序设计 278
14.1 显示器种类及性能 278
14.2 用BIOS调用编制显示程序 279
14.3.1 CGA显示器的性能 282
14.3 CGA显示程序设计 282
14.3.2 CGA适配器 283
14.3.3 CGA显示器编程 288
*14.4 EGA/VGA显示程序设计 294
14.4.1 EGA/VGA程序设计模型 295
14.4.2 显示存储器 296
14.4.3 图形控制器 299
14.4.4 属性控制器 301
14.4.5 定序器 304
14.4.6 CRT控制器 305
14.4.7 外部寄存器 307
14.4.8 EGA/VGA显示器编程 308
习题 313
第十五章 键盘程序设计 315
15.1 键盘的种类与扫描码 315
15.2 IBM PC/XT标准键盘接口 316
15.3 键盘中断程序设计 317
*15.4 扩展键盘接口 319
15.4.1 扩展键盘接口程序设计模型 319
15.4.2 扩展键盘接口程序设计 321
*15.5 键盘程序设计 322
习题 325
16.2 打印机适配器 326
第十六章 打印程序设计 326
16.1 打印机的种类 326
16.3 字符打印程序设计 328
16.3.1 查询方式打印字符程序 328
16.3.2 中断方式打印程序设计 329
16.3.3 BIOS打印功能调用 331
*16.4 打印机控制代码 332
*16.5 图形打印程序设计 334
16.5.1 点阵式打印机打印头的结构及工作原理 334
16.5.2 打印图形程序设计 335
习题 337
第十七章 定时及音响程序设计 339
17.1 概述 339
17.2 8253/8254可编程定时/计数器 340
17.2.1 8253/8254的基本功能和内部结构 340
17.2.2 8253的工作方式 341
17.2.3 8253/8254在IBM PC系列机中的应用 342
17.3 时钟程序设计 343
17.3.1 使用8253/8254时钟 343
17.3.2 实时时钟的使用 346
17.4.2 音响程序的设计 348
*17.4 音响程序设计 348
17.4.1 扬声器与系统的连结 348
习题 353
*第十八章 通信程序设计 355
18.1 异步串行通信简介 355
18.1.1 串行传输及其优缺点 355
18.1.2 异步传输格式 355
18.2 异步串行通信适配器 356
18.3 8250的程序设计 356
18.4 通信程序设计 360
18.4.1 查询方式通信程序设计 360
18.4.2 中断方式通信程序设计 366
习题 373
第十九章 80286系统 374
19.1 80286 CPU结构 374
19.1.1 80286 CPU的内部结构 374
19.1.2 80286 CPU内部寄存器 375
19.2 80286系统存储器管理 377
19.2.1 80286的操作方式 377
19.2.2 有关特权的概念 377
19.2.3 保护虚地址方式的存储管理 378
19.3 特权级 380
19.4 80286的中断系统 382
19.5 80286增强与扩充的指令 383
19.5.1 增强的指令 383
19.5.2 扩充的指令 383
习题 386
*第二十章 80386/80486/Pentium系统 387
20.1 80386系统 387
20.1.1 80386 CPU的内部结构 387
20.1.2 80386寄存器 388
20.1.3 80386存储器管理 391
20.1.4 80386的中断和异常 393
20.1.5 80386的寻址方式 396
20.1.6 80386扩充的指令 397
20.2 80486系统 400
20.2.1 80486 CPU结构 400
20.2.2 80486的内存管理 401
20.2.3 80486的片内高速缓存 401
20.2.4 80486扩充的指令 401
20.3 Pentium系统 402
20.3.1 Pentium CPU结构 403
20.3.2 Pentium扩充的指令 404
习题 408
21.1 概述 409
*第二十一章 8087/80287/80387程序设计 409
21.2 8087/80287/80387的逻辑结构与运行 410
21.2.1 8087/80287/80387的逻辑结构 410
21.2.2 8087/80287/80387的运行 413
21.3 数据类型及格式 415
21.4 8087/80287/80387的指令系统 417
21.4.1 数据传送指令 417
21.4.2 算术运算指令 418
21.4.3 比较指令 421
21.4.4 函数指令 422
21.4.5 常数指令 424
21.4.6 处理器控制指令 425
21.5 8087/80287/80387程序设计举例 427
21.5.1 整数运算 427
21.5.2 实数运算 433
习题 436
第二十二章 MMX的程序设计 438
22.1 MMX简介 438
22.2 MM寄存器 439
22.3 检测MMX技术的存在 439
22.4 EMMS指令 440
22.5 异常 441
22.6.1 指令的句法 442
22.6 MMX指令 442
22.6.2 指令格式 443
22.6.3 表示法规则 443
22.6.4 MMX指令 443
22.7 MMX应用举例 468
22.7.1 Chroma Keying 468
22.7.2 矢量点乘积 468
22.7.3 矩阵乘积 469
22.7.4 使用alpha混合的图像分解 470
22.8.1 MMX的程序设计步骤 471
22.8 MMX的程序设计 471
22.8.2 程序设计举例 472
习题 477
附录 478
附录A 8086/8088指令系统 478
附录B 伪指令 486
附录C BIOS调用说明 487
附录D DOS功能调用说明 498
附录E IBM PC的键盘输入码和CRT显示码 504
参考文献 506