第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 机器语言 6
1.4.2 汇编语言 7
1.4.3 通用语言(高级语言) 8
第2章 计算机运算基础 11
2.1 进位计数制 11
2.2 数制之间的转换 12
2.2.1 二进制数与十进制数之间的相互转换 13
2.2.2 二进制数与八进制数之间的相互转换 14
2.2.3 二进制数与十六进制数之间的相互转换 14
2.2.4 八进制数与十进制数之间的相互转换 14
2.2.5 十六进制数与十进制数之间的相互转换 15
2.3 二进制编码 16
2.3.1 二进制编码的十进制数 16
2.3.2 字符的编码 17
2.4 带符号数的机内表示 20
2.4.1 机器数与真值 20
2.4.2 原码表示法 20
2.4.3 反码表示法 20
2.4.4 补码表示法 21
2.4.5 过余码 21
2.4.6 原码、反码、补码相互间的转换 21
2.5 二进制运算 22
2.5.1 补码加减法运算 22
2.5.2 逻辑运算 24
第3章 微型计算机的结构 26
3.1 8086/8088微型处理器的结构 26
3.1.1 8086/8088 CPU的内部结构 26
3.1.2 8086/8088寄存器和标志 27
3.2 存储器 30
3.2.1 存储器的分段结构 30
3.2.2 实际地址的产生 31
3.3 寻址方式 32
3.3.1 操作数的种类 32
3.3.2 8086/8088的寻址方式 33
3.3.3 段更换和段跨越 35
3.3.4 有效地址的计算时间 36
3.4 8086/8088指令系统 36
3.5 86系列各种微处理器之间的差异 36
第4章 汇编语言 40
4.1 汇编语言的语句格式 40
4.1.1 字符集 40
4.1.2 汇编语句格式 40
4.2 汇编语言中数据的表示方法 43
4.2.1 数据在机内的表示方法和范围 43
4.2.2 汇编语言中数据书写形式 45
4.3 运算符号 46
4.3.1 算术运算符 46
4.3.2 逻辑运算符 46
4.3.3 关系运算符 46
4.3.4 分析算符 46
4.3.5 组合算符 48
4.3.6 字节分离算符LOW和HIGH 48
4.3.7 记录专用算符 49
4.4 伪指令(汇编命令) 49
4.4.1 符号定义伪指令 49
4.4.2 数据定义伪指令 50
4.4.3 段定义伪指令 53
4.4.4 方式选择伪指令 56
4.4.5 其他伪指令 56
4.5 汇编语言上机过程 57
第5章 顺序结构程序 63
5.1 程序设计的步骤 63
5.2 流程图的应用 64
5.3 程序的基本控制结构 65
5.4 数据传送指令 67
5.5 算术运算指令 70
5.5.1 加法运算指令 70
5.5.2 减法运算指令 71
5.5.3 乘法运算指令 73
5.5.4 除法运算指令 74
5.6 逻辑操作指令 75
5.7 移位操作指令 77
5.8 状态标志位操作指令 78
5.9 简单的I/O功能调用 78
5.10 顺序结构程序举例 79
第6章 分支结构程序 90
6.1 分支结构程序的引出 90
6.2 转移指令 91
6.2.1 无条件转移指令JMP(Jump) 92
6.2.2 条件转移指令 92
6.3 分支结构程序设计 94
6.4 多分支结构程序设计 100
第7章 循环结构程序 105
7.1 循环结构程序的提出 105
7.2 循环结构程序的组成 107
7.3 循环控制指令 109
7.4 数据串操作指令 110
7.4.1 数据串基本操作指令 110
7.4.2 重复前缀 113
7.5 循环程序的控制方法 114
7.5.1 计数法 114
7.5.2 寄存器终值法 115
7.5.3 条件控制法 117
7.6 单重循环程序举例 119
7.7 多重循环程序设计 123
7.8 循环程序的效率 125
第8章 子程序设计 131
8.1 子程序的引出 131
8.2 子程序(过程)定义伪指令 132
8.3 调用和返回指令 133
8.3.1 调用分类 133
8.3.2 调用指令 133
8.3.3 返回指令 135
8.4 子程序设计方法 136
8.4.1 现场的保护和恢复 136
8.4.2 子程序说明文件 136
8.4.3 主程序与子程序之间的参数传递 137
8.5 子程序嵌套 145
8.6 递归子程序 148
8.7 可重入子程序 151
8.8 程序的连接 151
8.8.1 程序连接伪指令 151
8.8.2 模块连接方法 153
第9章 条件汇编与宏指令 159
9.1 条件汇编伪操作 159
9.2 宏伪操作 161
9.2.1 宏定义与宏结束伪操作命令 161
9.2.2 参数的使用 163
9.2.3 宏中的标号处理 166
9.2.4 宏嵌套 167
9.2.5 宏与子程序的区别 171
9.3 重复块宏操作命令 171
9.4 特殊宏操作命令 174
第10章 算术运算与代码转换 177
10.1 多字节加减运算 177
10.2 多字节整数乘除运算 178
10.2.1 一般整数乘法运算 178
10.2.2 多字节整数乘法运算 179
10.2.3 一般整数除法运算 181
10.2.4 多字节整数除法运算 181
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 浮点数据的表示方法 192
10.5 浮点数加减运算 193
10.5.1 浮点数加法 193
10.5.2 浮点数减法 197
10.6 浮点数乘除运算 197
10.6.1 浮点数乘法 198
10.6.2 浮点数除法 198
10.7 十进制数的ASCⅡ码串转换为二进制定点数 199
10.8 二进制定点数转换为十进制数的ASCⅡ码串 201
10.9 实数的ASCⅡ码串转换为浮点数 204
10.10 浮点数据转为十进制的ASCⅡ码串 204
10.10.1 浮点数转换为普通十进制数的ASCⅡ码串 204
10.10.2 浮点数转换为科学表示法的ASCⅡ码串 205
第11章 列表与字符串操作 207
11.1 列表处理 207
11.1.1 列表的定义 207
11.1.2 列表的存储结构 208
11.2 记录与结构 208
11.2.1 记录 208
11.2.2 结构 212
11.3 列表的种类及其运算 215
11.3.1 插入 215
11.3.2 删除 217
11.3.3 排序 218
11.3.4 检索 224
11.4 字符串处理 227
11.4.1 字符串的定义及表示方法 227
11.4.2 字符串的运算 228
第12章 输入输出与中断 233
12.1 输入输出指令 233
12.2 中断指令 234
12.3 外同步指令和空操作指令 235
12.4 CPU与外设间的数据传送 236
12.4.1 输入输出接口 236
12.4.2 CPU与外设之间的接口信号 237
12.4.3 CPU与外设之间的数据传送方式 238
12.5 中断系统概述 239
12.5.1 中断请求与中断源 239
12.5.2 中断系统的功能 240
12.5.3 中断响应 240
12.6 8086/8088的中断系统 241
12.6.1 外部中断 241
12.6.2 内部中断 243
12.6.3 中断向量表 244
12.7 8259A中断控制器及其程序设计 244
12.7.1 8259A的结构 245
12.7.2 8259A的程序设计 246
12.7.3 8259A在IBM PC系列机中的应用 249
12.8 中断程序设计方法 251
12.8.1 主程序设计 251
12.8.2 中断服务程序设计 251
12.8.3 中断服务程序设计中应注意的几个问题 252
12.9 IBM PC的BIOS调用及DOS功能调用 252
12.9.1 BIOS调用 253
12.9.2 DOS中断和功能调用 255
第13章 显示程序设计 261
13.1 显示器种类及性能 261
13.2 用BIOS调用编制显示程序 262
13.2.1 设置显示方式 262
13.2.2 设置光标位置 263
13.2.3 在光标处显示字符 264
13.2.4 指定位置画点 264
13.2.5 改变光标指示处的字符属性 265
13.3 CGA显示程序设计 265
13.3.1 CGA显示器的性能 265
13.3.2 CGA适配器 266
13.3.3 CGA显示器编程 272
13.4 EGA/VGA显示程序设计 279
13.4.1 EGA/VGA程序设计模型 279
13.4.2 显示存储器 280
13.4.3 图像控制器 283
13.4.4 属性控制器 286
13.4.5 定序器 289
13.4.6 CRT控制器 290
13.4.7 外部寄存器 291
13.4.8 EGA/VGA显示器编程 292
第14章 键盘程序设计 301
14.1 键盘的种类与扫描码 301
14.2 IBM PC/XT标准键盘接口 302
14.3 键盘中断程序设计 303
14.4 扩展键盘接口 305
14.4.1 扩展键盘接口程序设计模型 305
14.4.2 扩展键盘接口程序设计 308
14.5 键盘程序设计 309
14.5.1 键盘缓冲区的结构 310
14.5.2 键盘缓冲区的存取方法 310
第15章 打印程序设计 314
15.1 打印机的种类 314
15.2 打印机适配器 314
15.3 打印程序设计 315
15.3.1 查询方式打印字符程序 315
15.3.2 中断方式打印程序设计 317
15.3.3 BIOS打印功能调用 319
第16章 定时及音响程序设计 322
16.1 概述 322
16.2 8253/8254可编程定时/计数器 323
16.2.1 8253/8254的基本功能和内部结构 323
16.2.2 8253的工作方式 323
16.2.3 8253/8254在IBM PC系列机中的应用 326
16.3 时钟程序设计 326
16.3.1 使用8253/8254时钟 326
16.3.2 实时时钟的使用 329
16.4 音响程序设计 331
16.4.1 扬声器与系统的连接 331
16.4.2 音响程序的设计 332
第17章 通信程序设计 339
17.1 异步串行通信简介 339
17.1.1 串行传输及其优缺点 339
17.1.2 异步传输格式 339
17.2 异步串行通信适配器 340
17.3 8250的程序设计 341
17.4 通信程序设计 344
17.4.1 查询方式通信程序设计 344
17.4.2 中断方式通信程序设计 351
第18章 8087/80287/80387程序设计 360
18.1 概述 360
18.2 8087/80287/80387的逻辑结构与运行 361
18.2.1 8087/80287/80387的逻辑结构 361
18.2.2 8087/80287/80387的运行 364
18.3 数据类型及格式 366
18.4 8087/80287/80387的指令系统 368
18.4.1 数据传送指令 368
18.4.2 算术运算指令 370
18.4.3 比较指令 372
18.4.4 函数指令 374
18.4.5 常数指令 376
18.4.6 处理器控制指令 376
18.5 8087/80287/80387程序设计举例 378
18.5.1 整数运算 379
18.5.2 实数运算 385
第19章 IA-32汇编语言程序设计 390
19.1 IA-32处理器的结构 390
19.1.1 IA-32处理器的操作模式 390
19.1.2 IA-32 CPU内部寄存器结构 391
19.2 IA-32的内存管理 397
19.2.1 保护模式下的分段式存储管理 397
19.2.2 保护模式下的分页式存储管理 400
19.2.3 特权级 404
19.3 IA-32的寻址方式 406
19.4 IA-32的指令系统 407
19.4.1 增强的指令 408
19.4.2 新增的指令 408
19.5 IA-32汇编语言程序设计举例 413
19.5.1 IA-32汇编语言程序设计必要的伪指令 413
19.5.2 IA-32汇编语言程序举例 416
参考文献 421