第一章 概述 1
1.1 微型计算机的发展过程 1
1.2 微型计算机的特点 2
1.3 计算机系统 3
1.3.1 硬件子系统 3
1.3.2 软件子系统 4
1.4 计算机语言 6
1.4.1 机器语言 6
1.4.2 汇编语言 7
1.4.3 通用语言(高级语言) 8
习题 9
第二章 计算机运算基础 10
2.1 进位计数制 10
2.2 数制之间的转换 11
2.3 二进制编码 15
2.3.1 二进制编码的十进制数 15
2.3.2 字符的编码 16
2.4 带符号数的机内表示 16
2.5 二进制运算 19
2.5.1 补码加减法运算 19
2.5.2 逻辑运算 21
习题 21
第三章 微型计算机的结构 23
3.1 微型处理机的结构 23
3.1.1 8086/8088微型处理机的结构 23
3.1.2 80286微型处理机的结构 27
3.1.3 80386微型处理机的结构 30
3.2 存储器 33
3.2.1 8086/8088的存储器 33
3.2.2 80286的存储器管理 35
3.2.3 80386的存储器管理 40
3.3 寻址方式 43
3.3.1 操作数的种类 43
3.3.2 8086/8088的寻址方式 43
3.3.3 80386新增的寻址方式 45
3.3.4 段更换和段跨越 46
3.3.5 有效地址的计算时间 46
3.4 8086/8088指令系统 47
3.5 86系列各种微处理器之间的差异 47
习题 49
第四章 汇编语言 51
4.1 汇编语言的语句格式 51
4.1.1 字符集 51
4.1.2 汇编语句格式 51
4.2 汇编语言中数据的表示方法 53
4.2.1 数据在机内的表示方法和范围 53
4.2.2 汇编语言中数据书写形式 56
4.3 运算符号 56
4.3.1 算术运算符 56
4.3.2 逻辑运算符 56
4.3.3 关系运算符 57
4.3.4 分析算符 57
4.3.5 组合算符 58
4.3.6 字节分离算符LOW和HIGH 59
4.3.7 记录专用算符 59
4.4 伪指令(汇编命令) 60
4.4.1 符号定义伪指令 60
4.4.2 数据定义伪指令 60
4.4.3 段定义伪指令 63
4.4.4 方式选择伪指令 65
4.4.5 其他伪指令 65
4.5 汇编语言的上机过程 67
习题 70
第五章 顺序结构程序 72
5.1 程序设计的步骤 72
5.2 流程图的应用 73
5.3 程序的基本控制结构 74
5.4 数据传送指令 75
5.5 算术运算指令 79
5.5.1 加法运算指令 79
5.5.2 减法运算指令 80
5.5.3 乘法运算指令 81
5.5.4 除法运算指令 82
5.6 逻辑操作指令 83
5.7 移位操作指令 85
5.8 状态标志位操作指令 85
5.9 80286增强和扩充的指令 86
5.9.1 增强的指令 86
5.9.2 扩充的指令 86
5.10 80386增强和扩充的指令 89
5.11 简单的I/O功能调用 91
5.12 顺序结构程序举例 92
习题 99
第六章 分支结构程序 102
6.1 分支结构程序的引出 102
6.2 转移指令 103
6.2.1 无条件转移指令JMP(Jump) 103
6.2.2 条件转移指令 104
6.3 分支结构程序设计 105
6.4 多分支结构程序设计 110
习题 112
第七章 循环结构程序 115
7.1 循环结构程序的提出 115
7.2 循环结构程序的组成 117
7.3 循环控制指令 118
7.4 数据串操作指令 120
7.4.1 数据串基本操作指令 120
7.4.2 重复前缀 122
7.5 循环程序的控制方法 123
7.5.1 计数法 123
7.5.2 寄存器终值控制法 124
7.5.3 条件控制法 125
7.6 单重循环程序举例 127
7.7 多重循环程序设计 130
7.8 循环程序的效率 132
习题 134
第八章 子程序设计 138
8.1 子程序的引出 138
8.2 子程序(过程)定义伪指令 139
8.3 调用和返回指令 140
8.4 子程序设计方法 142
8.4.1 现场的保护和恢复 142
8.4.2 子程序说明文件 143
8.4.3 主程序与子程序之间的参数传递 144
8.5 子程序嵌套 150
8.6 递归子程序 153
8.7 可重入子程序 155
8.8 程序的连接 156
8.8.1 程序连接伪指令 156
8.8.2 模块连接方法 158
习题 159
第九章 条件汇编与宏指令 163
9.1 条件汇编伪操作 163
9.2 宏伪操作 165
9.2.1 宏定义与宏结束伪操作命令 165
9.2.2 参数的使用 166
9.2.3 宏中的标号处理 169
9.2.4 宏嵌套 170
9.2.5 宏与子程序的区别 173
9.3 重复块宏操作命令 174
9.4 特殊宏操作命令 175
习题 177
第十章 算术运算与代码转换 178
10.1 多字节加减运算 178
10.2 多字节整数乘除运算 179
10.2.1 一般整数乘法运算 179
10.2.2 多字节整数乘法运算 180
10.2.3 一般整数除法运算 182
10.2.4 多字节整数除法运算 182
10.3 BCD码运算 187
10.3.1 BCD码运算规则 187
10.3.2 BCD码运算调整指令 188
10.3.3 非组合的BCD码运算 189
10.3.4 组合的BCD码加减运算 190
10.3.5 BCD码数据的符号表示方法及运算方法 191
10.4 浮点数据的表示方法 191
10.5 浮点数加减运算 193
10.5.1 浮点数加法 193
10.5.2 浮点数减法 196
10.6 浮点数乘除运算 197
10.6.1 浮点数乘法 197
10.6.2 浮点数除法 197
10.7 十进制数的ASCII码串转换为二进制定点数 198
10.8 二进制定点数转换为十进制数的ASCII码串 200
10.9 实数的ASCII码串转换为浮点数 202
10.10 浮点数据转换为十进制数的ASCII码串 203
10.10.1 浮点数转换为普通十进制数的ASCII码串 203
10.10.2 浮点数转换为科学表示法的ASCII码串 203
习题 204
第十一章 列表与字符串操作 206
11.1 列表处理 206
11.1.1 列表的定义 206
11.1.2 列表的存储结构 207
11.2 记录与结构 207
11.2.1 记录 207
11.2.2 结构 210
11.3 列表的种类及其运算 213
11.3.1 插入 213
11.3.2 删除 215
11.3.3 排序 216
11.3.4 检索 220
11.4 字符串处理 224
11.4.1 字符串的定义及表示方法 224
11.4.2 字符串的运算 224
习题 226
第十二章 输入输出与中断 229
12.1 输入输出指令 229
12.2 中断指令 230
12.3 外同步指令和空操作指令 231
12.4 CPU与外设间的数据传送 232
12.4.1 输入输出接口 232
12.4.2 CPU与外设之间的接口信号 233
12.4.3 CPU与外设之间的数据传送方式 234
12.5 中断系统概述 235
12.5.1 中断请求与中断源 235
12.5.2 中断系统的功能 235
12.5.3 中断响应 236
12.6 8086/8088的中断系统 237
12.6.1 外部中断 237
12.6.2 内部中断 239
12.6.3 中断向量表 240
12.7 8259A中断控制器及其程序设计 240
12.7.1 8259A的结构 240
12.7.2 8259A的程序设计 241
12.7.3 8259A在IBM PC系列机中的应用 245
12.8 中断程序设计方法 246
12.8.1 主程序设计 246
12.8.2 中断服务程序设计 247
12.8.3 中断服务程序设计中应注意的几个问题 248
12.9 IBM PC的BIOS调用及DOS功能调用 248
12.9.1 BIOS调用 248
12.9.2 DOS中断和功能调用 250
习题 254
第十三章 显示程序设计 256
13.1 显示器种类及性能 256
13.2 用BIOS调用编制显示程序 257
13.3 CGA显示程序设计 260
13.3.1 CGA显示器的性能 260
13.3.2 CGA适配器 260
13.3.3 CGA显示器编程 265
13.4 EGA/VGA显示程序设计 272
13.4.1 EGA/VGA程序设计模型 272
13.4.2 显示存储器 273
13.4.3 图形控制器 276
13.4.4 属性控制器 278
13.4.5 定序器 281
13.4.6 CRT控制器 282
13.4.7 外部寄存器 284
13.4.8 EGA/VGA显示器编程 285
习题 290
第十四章 键盘程序设计 291
14.1 键盘的种类与扫描码 291
14.2 IBM PC/XT标准键盘接口 292
14.3 键盘中断程序设计 292
14.4 扩展键盘接口 295
14.4.1 扩展键盘接口程序设计模型 295
14.4.2 扩展键盘接口程序设计 297
14.5 键盘程序设计 298
习题 300
第十五章 打印程序设计 302
15.1 打印机的种类 302
15.2 打印机适配器 302
15.3 字符打印程序设计 303
15.3.1 查询方式打印字符程序 304
15.3.2 中断方式打印程序设计 305
15.3.3 BIOS打印功能调用 307
15.4 打印机控制代码 308
15.5 图形打印程序设计 309
15.5.1 点阵式打印机打印头的结构及工作原理 310
15.5.2 打印图形程序设计 310
习题 313
第十六章 定时及音响程序设计 314
16.1 概述 314
16.2 8253/8254可编程定时/计数器 315
16.2.1 8253/8254的基本功能和内部结构 315
16.2.2 8253的工作方式 316
16.2.3 8253/8254在IBM PC系列机中的应用 317
16.3 时钟程序设计 318
16.3.1 使用8253/8254时钟 318
16.3.2 实时时钟的使用 321
16.4 音响程序设计 322
16.4.1 扬声器与系统的连接 322
16.4.2 音响程序的设计 323
习题 328
第十七章 通信程序设计 329
17.1 异步串行通信简介 329
17.1.1 串行传输及其优缺点 329
17.1.2 异步传输格式 329
17.2 异步串行通信适配器 330
17.3 8250的程序设计 330
17.4 通信程序设计 333
17.4.1 查询方式通信程序设计 334
17.4.2 中断方式通信程序设计 339
习题 346
十八章 8087/80287/80387程序设计 347
18.1 概述 347
18.2 8087/80287/80387的逻辑结构与运行 348
18.2.1 8087/80287/80387的逻辑结构 348
18.2.2 8087/80287/80387的运行 351
18.3 数据类型及格式 352
18.4 8087/80287/80387的指令系统 354
18.4.1 数据传送指令 354
18.4.2 算术运算指令 356
18.4.3 比较指令 358
18.4.4 函数指令 359
18.4.5 常数指令 361
18.4.6 处理器控制指令 362
18.5 8087/80287/80387程序设计举例 364
18.5.1 整数运算 364
18.5.2 实数运算 370
习题 373
第十九章 MMX的程序设计 374
19.1 MMX简介 374
19.2 MMX寄存器 375
19.3 检测MMX技术的存在 375
19.4 EMMS指令 376
19.5 异常 376
19.6 MMX指令 377
19.6.1 指令的句法 377
19.6.2 指令格式 378
19.6.3 表示法规则 378
19.6.4 MMX指令 378
19.7 MMX应用举例 401
19.7.1 Chroma Keying 401
19.7.2 矢量点乘积 402
19.7.3 矩阵乘积 402
19.7.4 使用alpha混合的图像分解 403
19.8 MMX的程序设计 404
19.8.1 MMX程序设计的步骤 404
19.8.2 程序设计举例 405
习题 410
附录 411
附录A 8086/8088指令系统 411
附录B 伪指令 419
附录C BIOS调用说明 420
附录D DOS功能调用说明 431
附录E IBM PC的键盘输入码和CRT显示码 437
参考文献 439