第1章 微处理器:8086/8088—体系结构、引脚图和时序图 1
1.1 8086的寄存器组织 2
1.1.1 数据寄存器 2
1.1.2 段寄存器 2
1.1.3 指针和变址寄存器 3
1.1.4 标志寄存器 3
1.2 体系结构 3
1.2.1 存储分段 5
1.2.2 标志寄存器 6
1.3 8086的信号描述 7
1.4 物理存储器组织 13
1.5 一般总线操作 15
1.6 I/O寻址能力 16
1.7 特殊的微处理器行为 16
1.7.1 微处理器的复位和初始化 16
1.7.2 停机 17
1.7.3 测试和同步外部信号 17
1.7.4 系统总线的导出 17
1.8 最小模式下的8086系统和时序 19
1.9 最大模式下的8086系统和时序 22
1.10 8088微处理器 25
1.10.1 8088的体系结构和信号描述 25
1.10.2 8088总线的导出 28
1.10.3 8088系统的一般时序 30
1.10.4 8086和8088的比较 31
1.11 小结 32
1.12 习题 32
第2章 8086/8088指令集和汇编命令 35
2.1 机器语言指令格式 35
2.2 8086的寻址方式 38
2.3 8086/8088指令集 43
2.3.1 数据复制/传送指令 44
2.3.2 算术指令 54
2.3.3 逻辑指令 60
2.3.4 串操作指令 64
2.3.5 控制转移与分支指令 66
2.3.6 无条件分支指令 67
2.3.7 条件转移指令 69
2.3.8 标志处理指令与处理器控制指令 71
2.4 汇编命令与操作符 72
2.5 小结 80
2.6 习题 80
第3章 8086/8088汇编语言程序设计思想 81
3.1 一些机器语言级程序 82
3.2 源程序到机器码的转变 88
3.3 利用汇编器进行程序设计 93
3.3.1 程序的创建 94
3.3.2 程序的汇编 95
3.3.3 程序的链接 97
3.3.4 程序的调试 98
3.4 汇编语言示例程序 100
3.4.1 如何编写汇编语言程序 101
3.4.2 通过DOS功能调用来使用IBM微型计算机资源的程序 119
3.5 小结 124
3.6 习题 124
第4章 专有体系结构特征及相关编程 127
4.1 堆栈简介 127
4.2 8086/8088堆栈结构 128
堆栈编程 130
4.3 中断与中断服务例程 133
4.4 8086/8088中断周期 133
4.5 非屏蔽中断 135
4.6 可屏蔽中断 135
4.7 中断编程 136
4.8 过程参数传递 139
4.9 处理大于64KB的程序 142
4.10 宏汇编 144
4.10.1 宏定义 144
4.10.2 向宏传递参数 145
4.11 定时与延时 145
4.12 小结 148
4.13 习题 148
第5章 基本外设及其与8086/8088的接口 151
5.1 半导体存储器接口 151
5.1.1 静态RAM接口 152
5.1.2 8088的存储器接口 156
5.2 动态RAM接口 159
5.3 与I/O端口的接口 166
5.4 PIO8255(可编程输入/输出端口) 175
5.5 8255的工作模式 177
5.5.1 BSR模式 177
5.5.2 I/O模式 178
5.6 与模数转换器的接口 199
5.6.1 ADC0808/0809 200
5.6.2 ADC7109—双斜率积分型12位模数转换器 203
5.6.3 与8086的接口 208
5.7 与数模转换器的接口 210
5.7.1 AD7523—8位乘法型数模转换器 210
5.7.2 8位数模转换器DAC0800 212
5.8 与步进电机的接口 213
5.9 使用8255来控制高功率设备 217
5.10 小结 218
5.11 习题 218
第6章 专用可编程外设及其接口 221
6.1 可编程计数器/定时器 221
6.1.1 体系结构和信号描述 221
6.1.2 控制字寄存器 223
6.1.3 8253的操作模式 223
6.1.4 8253的编程和接口 227
6.2 可编程中断控制器8259A 235
6.2.1 8259A的体系结构和信号描述 235
6.2.2 8086系统的中断序列 237
6.2.3 8259A的命令字 238
6.2.4 8259的操作模式 241
6.2.5 8259的接口和编程 244
6.3 键盘/显示控制器8279 250
6.3.1 8279的体系结构和信号描述 251
6.3.2 8279的操作模式 253
6.3.3 操作模式的详细信息 254
6.3.4 8279的命令字 255
6.3.5 键编码和状态数据格式 258
6.3.6 8279的接口和编程 259
6.4 可编程通信接口8251USART 262
6.4.1 数据通信方法 262
6.4.2 8251的体系结构和信号描述 262
6.4.3 8251A的操作模式描述 265
6.4.4 8251和8086的连接接口和编程 270
6.5 小结 272
6.6 习题 272
第7章 DMA、软盘和CRT控制器 275
7.1 DMA控制器8257 275
7.1.1 8257的内部体系结构 276
7.1.2 数据总线缓冲器、读写逻辑、控制单元和优先级判决器 279
7.1.3 8257的信号描述 280
7.2 DMA传送与操作 282
7.2.1 DMA请求的优先级 283
7.2.2 编程与读取8257寄存器 283
7.2.3 8257和8086的接口 284
7.3 可编程DMA接口8237 287
7.3.1 8237的内部体系结构 287
7.3.2 8237的寄存器组织 287
7.3.3 8237的信号描述 290
7.3.4 8237的DMA操作 292
7.3.5 8237的传送方式 293
7.3.6 DMA的地址生成 294
7.3.7 8237命令与编程 294
7.4 软盘控制器8272 298
7.4.1 软盘 298
7.4.2 FDC 300
7.4.3 8272的内部体系结构 300
7.4.4 8272的信号描述 301
7.4.5 8272的功能描述 303
7.4.6 8272的命令 305
7.4.7 8272与8086的接口 322
7.5 CRT控制器8275 326
7.5.1 8275的内部体系结构 327
7.5.2 8275的信号描述 328
7.5.3 系统操作 330
7.5.4 8275的显示格式与操作特性 331
7.5.5 8275CRT控制器的命令集 335
7.5.6 状态标志位 340
7.5.7 8275与8086的连接与编程 341
7.6 CRT控制器6845 344
7.6.1 6845的体系结构与信号描述 344
7.6.2 6845的内部寄存器 351
7.6.3 重要的CRT时序 358
7.6.4 6845的接口与编程 360
7.7 小结 362
7.8 习题 363
第8章 多处理器系统 365
8.1 互连拓扑 366
8.2 多处理器系统的软件 371
8.3 数值处理器8087 372
8.3.1 8087的体系结构 373
8.3.2 8087的信号描述 374
8.3.3 8087的寄存器组 377
8.3.4 异常处理 380
8.3.5 8087和CPU的互连 381
8.3.6 8087的指令集 383
8.3.7 寻址方式和数据类型 389
8.3.8 8087的编程 390
8.4 I/O处理器8089 392
8.4.1 简介 392
8.4.2 8089的体系结构 394
8.5 总线仲裁和控制 396
8.6 紧耦合系统和松耦合系统 401
8.7 基于PC的多处理器系统设计 403
8.7.1 简介 403
8.7.2 子处理单元的设计 403
8.7.3 系统软件设计 408
8.7.4 到多处理器系统的DOS功能接口(虚拟) 410
8.7.5 结果和结论 413
8.8 小结 413
8.9 习题 413
第9章 80286-80287—具有存储管理和保护功能的微处理器 415
9.1 80286的显著特征 415
9.2 80286的内部体系结构 416
9.2.1 80286的寄存器组织 416
9.2.2 80286的内部模块结构图 418
9.2.3 80286的中断 420
9.3 80286的信号描述 422
9.4 实地址模式 425
9.5 受保护的虚地址模式(PVAM) 426
9.5.1 简介 426
9.5.2 PVAM中的物理地址计算 427
9.5.3 描述符及其类型 428
9.5.4 段描述符Cache寄存器 431
9.6 特权等级 434
9.6.1 任务特权等级 435
9.6.2 描述符特权等级 435
9.6.3 选择子特权等级 435
9.6.4 描述符访问和特权等级检查 435
9.6.5 特权等级变化 438
9.7 保护 438
9.8 特殊操作 440
9.8.1 处理器复位和初始化 440
9.8.2 任务切换操作 440
9.8.3 指针测试指令 441
9.8.4 保护模式初始化 442
9.8.5 进入PVAM的方式 442
9.8.6 停机 442
9.9 80286的总线接口 442
9.10 基本总线操作 443
9.11 80286的取指周期 446
9.12 80286最小系统配置 447
9.13 将存储器和I/O设备连接到80286 449
9.14 80286的总线使用优先权 452
9.15 总线保持和HLDA顺序 453
9.16 中断确认顺序 453
9.17 指令集特征 454
9.17.1 寻址模式 454
9.17.2 80286支持的数据类型 455
9.17.3 80286的附加指令 456
9.17.4 保护控制指令 458
9.18 80287数学协处理器 460
9.18.1 80287的体系结构 460
9.18.2 状态字和控制字 462
9.18.3 80287的信号描述 463
9.18.4 和80286的接口 464
9.18.5 80287支持的数据类型 466
9.18.6 指令集小结 466
9.19 小结 473
9.20 习题 474
第10章 80386-80387和80486—32位处理器 475
10.1 80386DX的显著特征 475
10.2 80386的体系结构和信号描述 476
10.3 80386的寄存器组织 479
10.4 80386的寻址模式 482
10.5 80386的数据类型 483
10.6 80386的实地址模式 483
10.7 80386的保护模式 484
10.8 段 486
10.8.1 描述符表 486
10.8.2 描述符 486
10.9 页 487
10.9.1 页操作 487
10.9.2 线性地址到物理地址的转换 488
10.10 虚拟8086模式 489
10.11 80386的增强指令集 491
10.12 协处理器80387 492
10.12.1 80387的体系结构 493
10.12.2 和80386的互连 495
10.13 带数值协处理器的CPU—80486DX 496
10.13.1 80486的显著特征 496
10.13.2 80486的体系结构 497
10.13.3 80486的信号描述 499
10.13.4 80486的普通特征 503
10.13.5 片上Cache和Cache控制单元 504
10.14 小结 508
10.15 习题 508
第11章 微处理器体系结构的最新发展—从Pentium开始的旅程 511
11.1 80586(Pentium)的显著特征 512
11.2 计算机体系结构的一些相关概念 512
11.3 系统体系结构 513
11.3.1 超标量执行 514
11.3.2 分离的指令Cache和数据Cache 515
11.3.3 浮点单元 515
11.3.4 浮点操作异常 516
11.4 分支预测 516
11.5 Pentium的增强指令集 517
11.6 MMX 517
11.7 Intel MMX的体系结构 517
11.8 MMX的数据类型 518
11.9 回卷和饱和算术运算 518
11.10 MMX指令集 519
11.11 编写多媒体应用程序时应该注意的突出问题 520
11.12 通向Pentium Pro和Pentium II的旅程 520
11.12.1 指令的动态执行 521
11.12.2 动态指令执行机制的实现 521
11.13 Pentium III(P III)—21世纪产生的CPU 522
11.14 小结 522
11.15 习题 523
第12章 Pentium4—21世纪产生的微处理器 525
12.1 Pentium4微处理器的起源 525
12.2 Pentium4微处理器的显著特征 526
12.3 Pentium4微处理器的NetBurst微体系结构 527
12.3.1 前端模块 528
12.3.2 IA-32指令译码器 529
12.3.3 Trace Cache(TC) 529
12.3.4 微码ROM 529
12.3.5 Pentium4中的前端分支预测器 530
12.3.6 分支预测 530
12.4 指令快表(ITLB)和分支预测 531
12.5 乱序执行 531
12.5.1 乱序执行引擎 532
12.5.2 寄存器重命名 532
12.5.3 指令调度 533
12.6 快速执行模块 533
12.7 存储子系统 533
12.7.1 页管理及虚拟存储器 533
12.7.2 Cache 534
12.8 超线程技术 534
12.8.1 线程级并行性 534
12.8.2 实现策略 535
12.9 Pentium中的超线程技术 535
12.9.1 体系结构状态 536
12.9.2 超线程技术的设计问题 536
12.9.3 操作系统 537
12.10 高级Pentium微处理器中的扩展指令集 537
12.10.1 流式SIMD扩展 538
12.10.2 Pentium III SSE指令的特征 538
12.10.3 SSE指令的类型 539
12.10.4 流式SIMD扩展2(SSE2)和扩展3(SSE3)指令 539
12.10.5 IA-32指令译码 541
12.10.6 微操作队列 541
12.11 指令集小结 541
12.11.1 Pentium4微处理器的通用指令 542
12.11.2 SSE SIMD单精度浮点指令集 547
12.11.3 SSE2压缩和标量双精度浮点指令 548
12.11.4 SSE3指令 550
12.12 形式化验证的需求 552
12.13 小结 552
12.14 习题 552
第13章 RISC体系结构概述 553
13.1 RISC处理器的历史 553
13.2 混合体系结构—RISC和CISC的混合 554
13.3 RISC的优点 554
13.4 RISC处理器的基本特征 555
13.5 RISC处理器的设计问题 556
13.5.1 寄存器窗口 556
13.5.2 流水线 556
13.5.3 单周期指令执行 557
13.6 流水线系统的性能问题 557
13.6.1 指令延迟 557
13.6.2 相关性问题 558
13.6.3 使用RISC处理器应该注意的问题 558
13.7 一些RISC处理器的体系结构 559
13.7.1 MIPS 559
13.7.2 Sun UltraSPARC 560
13.8 另一些RISC处理器的体系结构 563
13.9 小结 564
13.10 习题 564
第14章 基于微处理器的铝冶炼控制系统 565
14.1 铝冶炼的通用过程 565
14.2 电解室的常用控制方法 566
14.3 铝冶炼过程中电解室的异常 567
14.4 异常电解室控制法则的简单描述 568
14.5 设计中的主要问题 569
14.6 铝冶炼控制器硬件 569
14.7 控制算法 570
14.7.1 数据/参数描述 572
14.7.2 初始化 572
14.7.3 模块1 573
14.7.4 模块2 573
14.7.5 模块3 573
14.7.6 模块4 574
14.8 小结 574
第15章 基于微处理器的模式扫描系统设计 575
15.1 扫描器系统的组织结构 576
15.2 扫描系统描述 578
15.3 可编程的操作模式 579
15.4 存储器读/写系统和启动过程 582
15.5 结果及讨论 582
15.6 小结 584
第16章 设计一个电子称量台 585
16.1 设计难点 585
16.1.1 机械装置的基底(称重平台) 586
16.1.2 机械装置 587
16.1.3 称重传感器的选择和连接 588
16.1.4 电子线路设计 590
16.2 软件开发 600
16.2.1 软件操作 600
16.2.2 算法 601
16.3 校准 609
16.4 小结 609
第17章 微控制器8051和80196简介 611
17.1 英特尔公司的8位微控制器系列 612
17.2 8051的体系结构 613
17.3 8051的信号描述 615
17.4 8051的寄存器组 617
17.5 8051的重要操作特性 619
17.5.1 程序状态字 619
17.5.2 定时器模式控制寄存器 620
17.5.3 定时器控制寄存器 620
17.5.4 串口控制寄存器 620
17.5.5 电源控制寄存器 621
17.6 8051的存储器和I/O寻址 621
17.6.1 存储器寻址 621
17.6.2 外部I/O接口 624
17.7 8051的中断 625
17.8 8051的指令集 626
17.9 基于微控制器8051的连续滚动布匹或纸张长度测量系统的设计 628
17.9.1 引言 628
17.9.2 传感器 629
17.9.3 信号转换 630
17.9.4 微控制器系统 631
17.9.5 算法 633
17.10 英特尔公司的16位微控制器系列MCS-96 634
17.10.1 引言 634
17.10.2 80196体系结构 634
17.10.3 80196KC的寄存器组 638
17.10.4 80196KC的一般特性 641
17.11 小结 642
17.12 习题 643
附录A 指令集一览 645
附录B DOS功能调用:INT21H 657
附录C 8051指令集一览 673