第1章 微处理器和微型计算机概论 1
1.1 概述 1
1.2 IBM和IBM兼容个人计算机:可重编程微型计算机 1
1.3 微型计算机系统的一般结构 4
1.4 Intel公司的微处理结构的发展 6
1.4.1 微处理器性能:MIPS和iCOMP 8
1.4.2 晶体管的密度 8
1.4.3 可重编程微处理器和嵌入式微处理器 9
习题 12
第2章 80386DX微处理器的实地址模式软件结构 14
2.1 概述 14
2.2 80386DX微处理器的内部结构 14
2.3 80386DX微处理器的实模式软件模型 17
2.4 实模式下存储器地址空间和数据组织 17
2.5 数据类型 21
2.6 段寄存器和存储器分段 24
2.7 指令指针 24
2.8 通用数据寄存器 26
2.9 指针和变址寄存器 27
2.10 标志寄存器 28
2.11 实模式存储器地址的产生 30
2.12 堆栈 32
2.13 实模式输入/输出地址空间 35
习题 36
第3章 汇编语言编程 40
3.1 概述 40
3.2 软件:微型计算机的程序 40
3.3 IBM可兼容PC/AT汇编语言程序开发 44
3.3.1 描述问题 44
3.3.2 计划解决 45
3.3.3 用汇编语言编程 46
3.3.4 建立源程序 46
3.3.5 把源程序汇编成目标模块 46
3.3.6 产生运行模块 47
3.3.7 解的验证 48
3.3.8 程序开发周期中有关程序和文件 48
3.4 80386DX微处理器的指令集 49
3.5 80386DX微处理器的寻址方式 50
3.5.1 寄存器操作数寻址方式 50
3.5.2 立即操作数寻址方式 52
3.5.3 16位存储器操作数寻址方式 52
3.5.4 32位存储器操作数寻址方式 62
习题 64
第4章 PC/AT兼容微型计算机的机器语言编码和DEBUG(调试)软件开发程序 67
4.1 概述 67
4.2 汇编语言指令变换为机器代码 67
4.3 一个完整的程序编码成为机器代码 77
4.4 PC/AT和它的DEBUG(调试)程序 80
4.5 检查并修改存储器内容 85
4.5.1 转储(DUMP)命令 85
4.5.2 输入(ENTER)命令 88
4.5.3 填充(FILL)命令 90
4.5.4 移动(MOVE)命令 91
4.5.5 比较(COMPARE)命令 91
4.5.6 搜索(SEARCH)命令 92
4.6 数据的输入与输出 93
4.7 十六进制加法和减法 93
4.8 机器语言程序的装入、验证和保存 94
4.9 用汇编(ASSEMBLE)命令汇编指令 99
4.10 用跟踪(TRACE)和动行(GO)命令执行指令和程序 101
4.11 调试一个程序 105
习题 109
第5章 实模式80386DX微处理器编程(Ⅰ) 111
5.1 概述 111
5.2 数据传送指令 111
5.2.1 移动(MOV)指令 111
5.2.2 带符号扩展和带零扩展的移动指令:MOVSX和MOVZX 116
5.2.3 XCHG指令 116
5.2.4 XLAT和XLATB指令 120
5.2.5 存入有效地址和存入全部指针的指令 120
5.3 算术指令 125
5.3.1 加法指令:ADD,ADC,INC,AAA和DAA 125
5.3.2 减法指令:SUB,SBB,DEC,AAS,DAS和NEG 133
5.3.3 乘法和除法指令:MUL,DIV,IMUL,IDIV,AAM,AAD,CBW,CWDE,CWD和CDQ 138
5.4 逻辑指令 144
5.5 移位指令 147
5.6 循环移位指令 151
5.7 位测试和位扫描指令 154
习题 156
第6章 实模式80386DX微处理器编程(Ⅱ) 162
6.1 概述 162
6.2 标志控制指令 162
6.3 比较和置位指令 166
6.3.1 按条件设置字节值:SETee 169
6.4 转移指令 170
6.4.1 无条件和条件转移 171
6.4.2 分支程序结构:IF-THEN 176
6.4.3 循环程序结构:REPEAT-UNTIL和WHILE-DO 178
6.4.4 使用循环和分支软件结构应用程序 178
6.5 子程序和子程序处理指令 184
6.5.1 CALL和RET指令 184
6.5.2 入栈和出栈操作 188
6.5.3 堆栈帧指令:ENTER和LEAVE 195
6.6 循环和循环处理指令 198
6.7 串和串操作指令 205
6.7.1 移串:MOVSB,MOVSW 205
6.7.2 比较串和扫描串:CMPSB/CMPSW/CMPSD和SCASB/SCASW/SCASD 206
6.7.3 装入和保存串:LODSB/LODSW/LODSD和STOSB/STOSW/STOSD 206
6.7.4 重复串:REP 207
6.7.5 串指令的自动变址 208
习题 210
第7章 利用微软的MASM汇编程序进行汇编语言程序设计 216
7.1 概述 216
7.2 源程序的语法 216
7.2.1 汇编语言语句的语法 216
7.2.2 伪操作语句的语法 218
7.2.3 语句中的常数 218
7.2.4 使用算术、关系和逻辑运算符的操作数表达式 220
7.2.5 返回值和属性运算符 222
7.3 伪操作 223
7.3.1 伪操作 223
7.3.2 数据伪操作 223
7.3.3 段控制伪操作 225
7.3.4 模块化编程伪操作 227
7.3.5 存储器使用控制的伪操作 228
7.3.6 程序末尾伪操作 228
7.3.7 程序列表控制的伪操作 229
7.3.8 一个使用伪操作的源程序例子 229
7.4 利用编辑器创建源文件 231
7.4.1 使用EDLIN行编辑器 231
7.4.2 使用EDIT屏幕编辑器 234
7.5 用MASM汇编源程序 236
7.5.1 初始化汇编过程 236
7.5.2 汇编文件中的语法错误 240
7.5.3 目标模块 242
7.5.4 源清单 242
7.5.5 交叉引用表 243
7.6 利用链接程序创建可运行模块 243
7.6.1 模块化编程 243
7.6.2 初始化链接程序 244
7.7 装入和执行可运行模块 245
习题 248
第8章 80386DX保护模式的软件体系结构 251
8.1 概述 251
8.2 保护模式的寄存器模型 251
8.2.1 全局描述符表寄存器 251
8.2.2 中断描述符表寄存器 254
8.2.3 局部描述符表寄存器 255
8.2.4 控制寄存器 255
8.2.5 任务寄存器 257
8.2.6 改变功能的寄存器 258
8.3 保护模式的存储器管理和地址转换 259
8.3.1 虚拟地址和虚拟地址空间 260
8.3.2 虚拟地址空间的分段 261
8.3.3 物理地址空间和虚实地址转换 261
8.3.4 段式地址转换 262
8.3.5 虚拟地址空间的分页和虚实地址转换 265
8.4 描述符和页表项 266
8.5 保护模式的系统控制指令集 272
8.6 多任务和保护 274
8.6.1 保护和保护模式 275
8.6.2 在保护模式下访问代码和数据 278
8.6.3 任务切换和任务状态段表 281
8.7 虚拟8086模式 284
习题 285
第9章 80386DX微处理器、存储器和输入/输出接口 289
9.1 概述 289
9.2 80386DX微处理器 289
9.3 80386DX的接口 292
9.3.1 存储器/IO接口 292
9.3.2 中断接口 296
9.3.3 DMA接口 297
9.3.4 协处理器接口 297
9.4 系统时钟 298
9.5 总线状态及流水线和非流水线总线周期 298
9.5.1 非流水线和流水线总线周期 298
9.6 读和写总线周期时序 301
9.6.1 非流水线读周期时序 301
9.6.2 非流水线写周期时序 303
9.6.3 非流水线存储器总线周期中的等待状态 303
9.6.4 流水线读/写周期时序 305
9.7 存储器地址空间的硬件组织 306
9.8 存储器接口电路 310
9.8.1 地址的锁存和缓冲 312
9.8.2 数据总线收发器 314
9.8.3 地址译码器 316
9.9 输入/输出类型 321
9.9.1 独立I/O 321
9.9.2 存储器映像I/O 322
9.10 独立的I/O接口 323
9.11 输入和输出总线周期时序 328
9.12 输入/输出指令 330
习题 335
第10章 存储器设备、电路及子系统设计 339
10.1 概述 339
10.2 程序和数据存储器 339
10.3 只读存储器 340
10.3.1 ROM,PROM和EPROM 341
10.3.2 只读存储器方框图 341
10.3.3 读操作 343
10.3.4 标准的EPROM集成电路 343
10.3.5 扩充EPROM的字长和字容量 348
10.4 随机访问读/写存储器 349
10.4.1 静态和动态RAM 349
10.4.2 静态RAM的方框图 351
10.4.3 标准的静态RAM集成电路 352
10.4.4 SRAM的读和写周期操作 355
10.4.5 标准的动态RAM集成电路 356
10.4.6 RAM子系统的备份电源 358
10.5 奇偶校验、奇偶校验位及奇偶检查器/产生器电路 359
10.6 快擦写存储器 362
10.6.1 快擦写存储器方框图 364
10.6.2 快擦写存储器的阵列结构 365
10.6.3 标准的整体擦除快擦写存储器 366
10.6.4 标准的自举块快擦写存储器 368
10.6.5 标准的FlashFile快擦写存储器 371
10.7 等待状态电路 373
10.8 80386DX/SX微型计算机系统存储器接口电路 374
10.9 高速缓冲存储器 379
10.10 82385DX高速缓存控制器和高速缓存子系统 385
10.10.1 具有基于82385DX高速缓存的80386DX微型计算机的体系结构 385
10.10.2 82385DX的信号接口 385
10.10.3 直接映像高速缓存的操作 390
10.10.4 两路组相联高速缓存的操作 394
10.10.5 高速缓存的一致性及总线监视 396
10.10.6 不可高速缓存的存储器地址空间 397
习题 397
第11章 输入/输出接口电路的LSI外围器件 401
11.1 概述 401
11.2 基本I/O接口及专用I/O接口 401
11.3 独立I/O的字节芝度输出端口 402
11.3.1 时延循环及输出端LED的闪烁控制 405
11.4 独立I/O的字节宽芳输入端口 407
11.4.1 轮询开关状态 409
11.5 输入/输出握手信号及并行打印机接口 409
11.6 82C55A可编程外围接口(PPI) 415
11.7 利用82C55A实现独立I/O的并行输入/输出端口 426
11.8 利用82C55A实现存储器映像I/O的并行输入/输出端口 429
11.9 82C54可编程间隔定时器 432
11.9.1 82C54的方框图 432
11.9.2 82C54的组成结构 433
11.9.3 82C54计数器的操作方式 438
11.10 82C37A可编程DMA控制器 444
11.10.1 82C37A的微处理器接口 444
11.10.2 82C37A的DMA接口 445
11.10.3 82C37A的内部结构 447
11.11 80386DX微型计算机系统I/O电路 455
11.12 串行通信接口 457
11.12.1 同步和异步数据通信 457
11.12.2 单工、半双工及全双工的通信链路 459
11.12.3 USART和UART 460
11.12.4 波特率及波特率产生器 462
11.12.5 RS-232C接口 462
11.13 可编程通信接口控制器 463
11.13.1 8251A USART 463
11.13.2 8250/16450 UART 472
11.14 键盘及显示器接口 475
11.15 8279可编程键盘/显示控制器 478
习题 486
第12章 80386DX微处理器的中断和异常处理 490
12.1 概述 490
12.2 中断和异常的类型 490
12.3 中断向量和中断描述符表 492
12.4 中断指令 495
12.5 中断允许和禁止 497
12.6 外部硬件中断接口 497
12.7 外部硬件中断序列 499
12.8 82C59A可编程中断控制器 504
12.8.1 82C59A的方框图 506
12.8.2 82C59A的内部体系结构 507
12.8.3 对82C59A进行编程 509
12.8.4 初始化命令字 510
12.8.5 操作命令字 513
12.9 使用82C59A的中断接口电路 516
12.10 软件中断 521
12.11 非屏蔽中断 522
12.12 复位 522
12.13 内部中断和异常处理 525
12.13.1 除法错误异常 525
12.13.2 调试异常 525
12.13.3 断点中断 527
12.13.4 溢出错误异常 527
12.13.5 边界检查异常 527
12.13.6 无效操作码异常 527
12.13.7 协处理器扩展不可用异常 527
12.13.8 中断表限长太小异常 527
12.13.9 协处理器段溢出异常 528
12.13.10 堆栈错误异常 529
12.13.11 段溢出异常 529
12.13.12 协处理器错误异常 529
12.13.13 保护模式内部中断和异常 529
习题 529
第13章 80386DX PC/AT微型计算机硬件系统 533
13.1 概述 533
13.2 传统IBM PC/AT主板的结构 533
13.3 高度集成的PC/AT兼容外围芯片 538
13.4 80386DX微型计算机核心 539
13.5 82345数据缓冲器 549
13.5.1 82345方框图 549
13.5.2 82345的输入、输出 550
13.5.3 在PC/AT微机中使用82345 553
13.6 82346系统控制器 555
13.6.1 82346芯片方框图 555
13.6.2 82346芯片的输入输出及其在PC/AT微机中的应用 557
13.7 82344ISA控制器 566
13.7.1 82344的方框图 566
13.7.2 82344芯片的输入输出信号及其用途 568
13.8 82341高集成度外围组合 579
13.8.1 82341芯片方框图 579
13.8.2 82341芯片的输入输出信号及在PC/AT微机系统中的连接 579
13.9 82077AA软盘控制器 584
13.9.1 82077AA方框图 584
13.9.2 82077AA的输入输出信号及其在PC/AT微机中的应用 586
习题 589
第14章 PC/AT总线接口、电路构造、测试和故障诊断 594
14.1 概述 594
14.2 PC/AT基于总线的接口 594
14.3 PCμLAB实验测试单元 595
14.4 PCμLAB的在板电路实验 600
14.4.1 I/O地址译码 602
14.4.2 开关输入电路 604
14.4.3 LED输出电路 606
14.4.4 扬声器驱动电路 608
14.5 电路建立、测试及故障诊断 609
14.5.1 建立电路 609
14.5.2 测试电路操作 612
14.5.3 排除微机接口电路故障 616
14.6 利用数字逻辑分析仪观察微机总线活动 622
习题 623
第15章 80486微处理器系列 628
15.1 概述 628
15.2 80486微处理器系列 628
15.3 80486的内部体系结构 629
15.4 80486SX的实模式软件模型及指令集 631
15.4.1 字节交换指令:BSWAP 631
15.4.2 交换加法指令:XADD 633
15.4.3 比较交换指令:CMPXCHG 634
15.5 80486SX的保护模式软件结构 635
15.5.1 软件模型 635
15.5.2 标志寄存器 635
15.5.3 控制寄存器 635
15.5.4 系统控制指令集 636
15.5.5 页面目录和页面表项 638
15.6 80486微处理器的硬件体系结构 638
15.7 80466SX MPU的信号接口 639
15.7.1 存储器I/O接口 639
15.7.2 高速缓存控制接口 641
15.7.3 总线仲裁接口 642
15.8 存储器与I/O的软件组织、硬件组织及接口电路 642
15.9 非突发式和突发式总线周期 649
15.9.1 非突发非缓存式总线周期 649
15.9.2 非突发缓存式总线周期 649
15.9.3 突发缓存式总线周期 650
15.10 80486SX的高速缓存 650
15.10.1 80486SX片内高速缓存的组织和操作 651
15.10.2 允许和禁用片内高速缓存 654
15.10.3 高速缓存的擦除操作 654
15.10.4 高速缓存“数据线”无效操作 654
15.11 高集成度存储器/输入/输出外围电路——R400EX 654
15.12 中断、复位及内部异常处理 657
15.12.1 外部硬件中断和非屏蔽中断 657
15.12.2 复位 657
15.12.3 软中断和内部异常处理 657
15.13 80486DX2与80486DX4微处理器 659
习题 662
第16章 奔腾(PentiumR)微处理器系列 666
16.1 概述 666
16.2 奔腾微处理器系列 666
16.3 奔腾处理器的内部结构 667
16.4 奔腾处理器的软件结构 668
16.4.1 实模式和保护模式寄存器组 668
16.4.2 增强的指令集 670
16.4.3 系统管理模式 672
16.5 奔腾处理器的硬件结构 672
16.6 奔腾处理器的信号接口 673
16.6.1 存储器/IO信号接口 675
16.6.2 高速缓存控制接口 675
16.6.3 中断信号接口 676
16.7 存储器子系统电路 676
16.7.1 交替式DRAM存储器阵列 676
16.7.2 RAS/CAS地址多路转换电路 677
16.7.3 数据总线收发器电路 678
16.7.4 控制逻辑电路 678
16.8 非流水线式、流水线式及突发式总线周期 679
16.8.1 非流水线式读/写周期 680
16.8.2 突发式读写总线周期 680
16.8.3 流水线式读、写总线周期 683
16.9 奔腾处理器的高速缓存 684
16.9.1 片内高速缓存的组织方式及有关操作 684
16.9.2 片内高速缓存有效、禁用和擦除 685
16.10 中断、复位和内部异常处理 686
16.10.1 机器检查异常处理 687
16.10.2 由RESET和INIT信号引起的初始化 687
16.11 高能奔腾处理器和具有MMXTM技术的奔腾处理器 688
习题 690
习题答案 694