第1章 微型计算机的基础知识 1
1.1 计算机中的数和编码 1
1.1.1 计算机中的数制 1
1.1.2 符号数的表示法 2
1.1.3 二进制数的加减运算 4
1.1.4 二进制数的逻辑运算与逻辑电路 6
1.1.5 二进制编码 8
1.1.6 BCD数的加减运算 10
1.2 逻辑单元与逻辑部件 11
1.2.1 触发器 11
1.2.2 寄存器 13
1.2.3 移位寄存器 14
1.2.4 计数器 14
1.2.5 三态输出门与缓冲放大器 15
1.2.6 译码器 16
1.3 微型计算机的结构和工作原理 16
1.3.1 微型计算机常用的术语 16
1.3.2 微型计算机的基本结构 17
1.3.3 计算机的工作原理 19
1.4 8086/8088微处理器 20
1.4.1 8086/8088的结构 20
1.4.2 8086/8088的寄存器 21
1.5 8086/8088的存储器结构与堆栈 23
1.5.1 存储器编址 23
1.5.2 存储器分段和物理地址的生成 24
1.5.3 堆栈和栈操作指令 25
1.6 80x86系列微处理器 26
1.6.1 80286 27
1.6.2 80386 28
1.6.3 80486 30
1.6.4 Pentium(奔腾) 30
习题与思考题 31
第2章 汇编语言与汇编程序 33
2.1 符号指令中的表达式 33
2.1.1 常量和数值表达式 34
2.1.2 变量和地址表达式 34
2.1.3 标号 36
2.1.4 变量和标号类型的变更 36
2.2 符号指令的寻址方式 37
2.2.1 寄存器寻址 37
2.2.2 立即寻址 38
2.2.3 直接寻址 38
2.2.4 间接寻址 38
2.2.5 基址寻址 39
2.2.6 变址寻址 39
2.2.7 基址变址寻址 40
2.2.8 存储器寻址中段地址的确定 41
2.3 常用指令 41
2.3.1 数据传送类指令 42
2.3.2 加减运算指令 45
2.3.3 位操作指令 48
2.3.4 指令应用举例 52
2.4 伪指令 58
2.4.1 过程的定义 58
2.4.2 段的定义 58
2.4.3 汇编地址计数器 59
2.4.4 段寄存器的假定 60
2.4.5 源程序的结束 60
2.4.6 宏汇编源程序的格式 60
2.5 常用系统功能调用和BIOS 62
2.5.1 系统功能调用 62
2.5.2 常用系统功能调用应用举例 64
2.5.3 BIOS 68
习题与思考题 71
第3章 程序设计的基本技术 75
3.1 顺序程序设计 75
3.1.1 乘除法指令 75
3.1.2 BCD数调整指令 78
3.1.3 顺序程序设计举例 84
3.2 分支程序设计 87
3.2.1 条件转移指令 88
3.2.2 无条件转移指令 89
3.2.3 分支程序设计举例 90
3.3 循环程序设计 93
3.3.1 循环程序的基本结构 95
3.3.2 重复控制指令 96
3.3.3 单重循环程序设计举例 97
3.3.4 多重循环程序设计举例 111
3.4 串处理程序设计 118
3.4.1 方向标志置位和清除指令 118
3.4.2 串操作指令 118
3.4.3 重复前缀 119
3.4.4 串操作程序设计举例 120
3.5 子程序设计 126
3.5.1 子程序的概念 126
3.5.2 子程序的调用指令与返回指令 128
3.5.3 子程序及其调用程序设计举例 130
3.6 宏功能程序设计 143
3.6.1 宏指令 143
3.6.2 条件汇编与宏库的使用 147
3.6.3 宏功能程序设计举例 147
3.7 80286、80386、80486和Pentiun程序设计 151
3.7.1 80286、80386、80486和Pentiun微处理器的指令 151
3.7.2 MASM 5.0以上版本的伪指令 159
3.7.3 存储器操作数中的地址表达式 160
3.7.4 80x86汇编源程序设计举例 161
习题与思考题 164
第4章 8086/8088的总线与时序 171
4.1 8086/8088的引线及功能 171
4.1.1 8088的地址和数据线 171
4.1.2 8088的控制和状态线 172
4.1.3 电源和定时线 174
4.1.4 8086与8088的区别 174
4.2 8088的CPU系统 175
4.2.1 地址锁存器 175
4.2.2 双向总线驱动器 176
4.2.3 时钟发生器8284A 176
4.2.4 总线控制器8288 178
4.2.5 最小组态下的8088 CPU系统 179
4.2.6 最大组态下的8088 CPU系统 179
4.3 8088的时序 180
4.3.1 指令周期、总线周期和T状态 180
4.3.2 最小组态下的8088时序 181
4.3.3 最大组态下的8088时序 184
习题与思考题 187
第5章 半导体存储器 188
5.1 存储器概述 188
5.1.1 存储器的类型 188
5.1.2 存储器的性能指标与分级结构 188
5.2 常用的存储器芯片 189
5.2.1 半导体存储器芯片的结构 189
5.2.2 随机读写存储器RAM 190
5.2.3 只读存储器功ROM 191
5.3 存储器与CPU的接口 192
5.3.1 存储器芯片与地址总线的连接 192
5.3.2 存储器芯片与数据总线的连接 193
5.3.3 存储器芯片与控制总线的连接 194
5.3.4 连接举例 194
5.3.5 存储器与CPU连接时的速度匹配问题 197
习题与思考题 198
第6章 输入输出和接口技术 199
6.1 接口的基本概念 199
6.1.1 接口的功能 199
6.1.2 接口控制原理 200
6.1.3 接口控制信号 202
6.2 I/O指令和I/O地址译码 203
6.2.1 标准的I/O寻址方式 203
6.2.2 存储器映像I/O寻址方式 203
6.2.3 输入输出指令 204
6.2.4 I/O接口的端口地址译码 204
6.3 80x86 PC机的系统总线 206
6.3.1 总线概述 206
6.3.2 PCI总线 207
6.3.3 ISA(Industry Standard Architecture)总线 207
6.3.4 输入输出接口卡 209
6.4 数字通道接口 209
6.4.1 数据输出寄存器 210
6.4.2 数据输入三态缓冲器 210
6.4.3 三态缓冲寄存器 211
6.4.4 寄存器和缓冲器接口的应用 211
6.5 模拟通道接口 221
6.5.1 数模转换器及其与微型计算机的接口 222
6.5.2 模数转换器ADC及其与微型计算机的接口 228
习题与思考题 234
第7章 中断技术 236
7.1 中断和中断系统 236
7.1.1 中断的概念 236
7.1.2 中断源 236
7.1.3 中断系统的功能 237
7.2 中断的处理过程 237
7.2.1 CPU对中断的控制 237
7.2.2 CPU对中断的响应及中断过程 239
7.2.3 中断源及其优先权的识别 239
7.3 中断控制器8259A 241
7.3.1 8259A的组成和接口信号 242
7.3.2 8259A处理中断的过程 243
7.3.3 8259A的级联连接 243
7.3.4 8259A的命令字 244
7.4 80x86 PC机的中断系统和中断指令 247
7.4.1 外部中断 247
7.4.2 内部中断 248
7.4.3 中断向量表 248
7.4.4 中断响应和处理过程 249
7.5 可屏蔽中断服务程序的设计 250
7.5.1 中断服务程序入口地址的装入 250
7.5.2 中断屏蔽与中断结束的处理 251
7.5.3 中断服务程序设计举例 251
习题与思考题 258
第8章 常用可编程接口芯片 260
8.1 可编程并行接口8255 260
8.1.1 8255的组成与接口信号 260
8.1.2 8255的工作方式与控制字 262
8.1.3 三种工作方式的功能 264
8.1.4 8255在IBM PC XT系统中的应用 271
8.2 可编程计数器/定时器8253 273
8.2.1 8253的组成与接口信号 274
8.2.2 计数器的工作方式及其与输入输出的关系 275
8.2.3 8253的控制字和初始化编程 277
8.2.4 8253的应用 278
8.3 串行通信与异步通信控制器8250的应用 284
8.3.1 微型计算机的串行口 284
8.3.2 异步通信控制器8250 287
8.3.3 8250与微型计算机及RS-232接口信号的连接 294
8.3.4 异步串行通信程序设计 295
8.3.5 PC机之间的通信 297
8.3.6 PC机与MCS-51单片机之间的通信 300
8.4 键盘/显示控制器8279 303
8.4.1 8279的组成和接口信号 303
8.4.2 8279的操作命令 305
8.4.3 8279在键盘和显示器接口中的应用 306
习题与思考题 311
附录1 8086指令系统表 313
附录2 8086算术逻辑运算指令对状态标志位的影响 317