《Intel微处理器 原书第8版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)BARRYB.BREY著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2010
  • ISBN:9787111304852
  • 页数:695 页
图书介绍:本书重点讲解Intel系列微处理器(8086/8088、80186/80188、80286、80386、80486、Pentium、Pentium Pro Processor、Pentium II、Pentium III、Pentium 4和Core2)的体系结构、程序设计和接口通信技术,并通过微型计算机原理把三者有机地整合在一起。本书以Intel系列微处理器为背景,以DOS, Windows和Visual C/C++为编程环境,通过示例为读者深入揭示了微型计算机工作原理和最新的技术进步。许多示例都可能成为开发类似应用的样板或原型,以指引开发新的应用。

第1章 微处理器和计算机导论 1

1.1 历史背景 1

1.1.1 机械时代 1

1.1.2 电子时代 2

1.1.3 程序设计的进步 3

1.1.4 微处理器时代 4

1.1.5 现代微处理器 5

1.2 基于微处理器的PC系统 12

1.2.1 存储器和I/O系统 12

1.2.2 微处理器 17

1.3 数制 20

1.3.1 数字 20

1.3.2 按位计数法 20

1.3.3 其他数制转换到十进制 21

1.3.4 十进制转换成其他进制 22

1.3.5 二进制编码的十六进制 23

1.3.6 补码 24

1.4 计算机数据格式 24

1.4.1 ASCII和Unicode数据 25

1.4.2 BCD数据 26

1.4.3 字节数据 27

1.4.4 字数据 28

1.4.5 双字数据 30

1.4.6 实数 31

1.5 小结 32

1.6 习题 33

第2章 微处理器及其体系结构 36

2.1 微处理器的内部体系结构 36

2.1.1 程序设计模型 36

2.1.2 多功能寄存器 38

2.2 实模式存储器寻址 41

2.2.1 段和偏移 41

2.2.2 默认段和偏移寄存器 42

2.2.3 段和偏移寻址机制允许重定位 43

2.3 保护模式存储器寻址简介 43

2.3.1 选择子和描述符 44

2.3.2 程序不可见寄存器 47

2.4 内存分页 48

2.4.1 分页寄存器 48

2.4.2 页目录和页表 50

2.5 平展模式内存 51

2.6 小结 52

2.7 习题 52

第3章 寻址方式 54

3.1 数据寻址方式 54

3.1.1 寄存器寻址 57

3.1.2 立即寻址 58

3.1.3 直接数据寻址 60

3.1.4 寄存器间接寻址 63

3.1.5 基址加变址寻址 65

3.1.6 寄存器相对寻址 67

3.1.7 相对基址加变址寻址 68

3.1.8 比例变址寻址 70

3.1.9 RIP相对寻址 71

3.1.10 数据结构 71

3.2 程序存储器寻址 72

3.2.1 直接程序存储器寻址 72

3.2.2 相对程序存储器寻址 72

3.2.3 间接程序存储器寻址 73

3.3 堆栈存储器寻址 74

3.4 小结 76

3.5 习题 78

第4章 数据传送指令 80

4.1 MOV回顾 80

4.1.1 机器语言 80

4.1.2 Pentium 4和Core2的64位模式 86

4.2 PUSH/POP指令 87

4.2.1 PUSH指令 87

4.2.2 POP指令 89

4.2.3 初始化堆栈 90

4.3 装入有效地址 91

4.3.1 LEA指令 91

4.3.2 LDS、LES、LFS、LGS和LSS指令 92

4.4 数据串传送 94

4.4.1 方向标志 94

4.4.2 DI和SI 94

4.4.3 LODS指令 94

4.4.4 STOS指令 95

4.4.5 MOVS指令 96

4.4.6 INS指令 98

4.4.7 OUTS指令 99

4.5 其他数据传送指令 99

4.5.1 XCHG指令 99

4.5.2 LAHF和SAHF指令 100

4.5.3 XLAT指令 100

4.5.4 IN和OUT指令 101

4.5.5 MOVSX和MOVZX指令 102

4.5.6 BSWAP指令 103

4.5.7 CMOV指令 103

4.6 段超越前缀 103

4.7 汇编程序详述 104

4.7.1 伪指令 104

4.7.2 存储器组织 108

4.7.3 程序举例 110

4.8 小结 112

4.9 习题 113

第5章 算术和逻辑运算指令 115

5.1 加法、减法和比较指令 115

5.1.1 加法指令 115

5.1.2 减法指令 119

5.1.3 比较指令 121

5.2 乘法和除法指令 122

5.2.1 乘法指令 122

5.2.2 除法指令 124

5.3 BCD码和ASCII码算术运算指令 127

5.3.1 BCD算术运算指令 127

5.3.2 ASCII算术运算指令 128

5.4 基本逻辑运算指令 130

5.4.1 AND指令 130

5.4.2 OR指令 131

5.4.3 XOR指令 132

5.4.4 测试和位测试指令 133

5.4.5 NOT指令和NEG指令 134

5.5 移位指令和循环移位指令 134

5.5.1 移位指令 134

5.5.2 双精度移位指令 135

5.5.3 循环移位指令 136

5.5.4 位扫描指令 136

5.6 串比较指令 137

5.6.1 SCAS指令 137

5.6.2 CMPS指令 137

5.7 小结 138

5.8 习题 139

第6章 程序控制指令 141

6.1 转移指令 141

6.1.1 无条件转移指令 141

6.1.2 条件转移和条件设置 145

6.1.3 LOOP指令 148

6.2 控制汇编语言程序的流程 149

6.2.1 WHILE循环 151

6.2.2 REPEAT-UNTIL循环 152

6.3 过程 153

6.3.1 CALL指令 154

6.3.2 RET指令 156

6.4 中断概述 157

6.4.1 中断向量 157

6.4.2 中断指令 158

6.4.3 中断控制 159

6.4.4 PC机的中断 159

6.4.5 64位模式中断 160

6.5 机器控制及其他指令 160

6.5.1 控制进位标志位 160

6.5.2 WAIT指令 160

6.5.3 HLT指令 161

6.5.4 NOP指令 161

6.5.5 LOCK前缀 161

6.5.6 ESC指令 161

6.5.7 BOUND指令 161

6.5.8 ENTER和LEAVE指令 161

6.6 小结 162

6.7 习题 163

第7章 在C/C++中使用汇编语言 165

7.1 在16位DOS应用程序中使用汇编语言与C/C++语言 165

7.1.1 基本规则和简单程序 166

7.1.2 _asm块中不能使用的MASM功能 167

7.1.3 使用字符串 167

7.1.4 使用数据结构 169

7.1.5 混合语言编程的例子 171

7.2 在32位应用程序中使用汇编语言与Visual C/C++语言 172

7.2.1 使用控制台I/O访问键盘和显示器的例子 173

7.2.2 直接访问I/O端口 174

7.2.3 开发Windows的Visual C++应用程序 174

7.3 汇编和C++混合目标码 180

7.3.1 用Visual C++链接汇编语言 181

7.3.2 在C/C++程序中添加新的汇编语言指令 184

7.4 小结 185

7.5 习题 185

第8章 微处理器程序设计 187

8.1 模块化程序设计 187

8.1.1 汇编程序和链接程序 187

8.1.2 PUBLIC和EXTRN 189

8.1.3 库 190

8.1.4 宏 193

8.2 使用键盘和视频显示器 195

8.2.1 读取键盘 195

8.2.2 使用视频显示器 198

8.2.3 在程序中使用定时器 201

8.2.4 鼠标 202

8.3 数据转换 204

8.3.1 二进制转换为ASCII码 204

8.3.2 ASCII码转换为二进制 205

8.3.3 显示和读入十六进制数 206

8.3.4 使用查找表实现数据转换 208

8.3.5 使用查找表的示例程序 209

8.4 磁盘文件 210

8.4.1 磁盘的组织 211

8.4.2 文件名 212

8.4.3 顺序存取文件 212

8.4.4 随机存取文件 220

8.5 程序举例 222

8.5.1 时间/日期显示程序 222

8.5.2 数字排序程序 223

8.5.3 数据加密 225

8.6 小结 226

8.7 习题 227

第9章 8086/8088硬件特性 228

9.1 引脚和引脚功能 228

9.1.1 引脚 228

9.1.2 电源要求 229

9.1.3 直流特性 229

9.1.4 引脚定义 229

9.2 时钟产生器8284A 232

9.2.1 8284A时钟产生器 232

9.2.2 8284A的操作 233

9.3 总线缓冲及锁存 233

9.3.1 多路分离总线 234

9.3.2 缓冲系统 236

9.4 总线时序 237

9.4.1 基本的总线操作 237

9.4.2 一般的时序 238

9.4.3 读时序 238

9.4.4 写时序 241

9.5 就绪和等待状态 241

9.5.1 READY输入 241

9.5.2 RDY和8284A 242

9.6 最小模式与最大模式 244

9.6.1 最小模式操作 244

9.6.2 最大模式操作 244

9.6.3 8288总线控制器 244

9.7 小结 246

9.8 习题 246

第10章 存储器接口 248

10.1 存储器器件 248

10.1.1 存储器引脚 248

10.1.2 ROM存储器 249

10.1.3 静态RAM(SRAM)器件 251

10.1.4 动态RAM(DRAM)存储器 254

10.2 地址译码 258

10.2.1 为什么要进行存储器译码 258

10.2.2 简单的与非门译码器 258

10.2.3 3-8线译码器(74LS138) 259

10.2.4 双2-4线译码器(74LS139) 261

10.2.5 PLD可编程译码器 262

10.3 8088和80188(8位)存储器接口 265

10.3.1 基本的8088/80188存储器接口 265

10.3.2 与快闪存储器接口 268

10.3.3 错误校正 270

10.4 8086、80186、80286和80386SX(16位)存储器接口 271

10.5 80386DX和80486(32位)存储器接口 278

10.5.1 存储体 278

10.5.2 32位存储器接口 279

10.6 Pentium~Core2(64位)存储器接口 281

10.7 DRAM 284

10.7.1 DRAM回顾 284

10.7.2 EDO存储器 286

10.7.3 SDRAM 286

10.7.4 DDR 286

10.7.5 DRAM控制器 287

10.8 小结 287

10.9 习题 288

第11章 基本I/O接口 289

11.1 I/O接口概述 289

11.1.1 I/O指令 289

11.1.2 独立编址I/O与存储器映像I/O 290

11.1.3 PC机I/O映像 291

11.1.4 基本输入输出接口 291

11.1.5 握手 293

11.1.6 关于接口电路的注释 294

11.2 I/O端口地址译码 296

11.2.1 译码8位I/O地址 296

11.2.2 译码16位I/O地址 297

11.2.3 8位与16位I/O端口 298

11.2.4 32位I/O端口 300

11.3 可编程外围设备接口 303

11.3.1 82C55基本描述 303

11.3.2 82C55编程 304

11.3.3 方式0操作 305

11.3.4 与82C55接口的LCD显示器 309

11.3.5 方式1选通输入 319

11.3.6 方式1选通输出 321

11.3.7 方式2双向操作 322

11.3.8 82C55方式小结 324

11.3.9 串行EEPROM接口 325

11.4 8254可编程间隔定时器 326

11.4.1 8254功能描述 326

11.4.2 8254编程 327

11.4.3 直流电机速度与方向控制 331

11.5 16550可编程通信接口 334

11.5.1 异步串行数据 335

11.5.2 16550功能描述 335

11.5.3 16550编程 336

11.6 模/数转换器(ADC)与数/模转换器(DAC) 340

11.6.1 DAC0830数/模转换器 341

11.6.2 ADC080X模/数转换器 342

11.6.3 使用ADC0804和DAC0830的实例 344

11.7 小结 345

11.8 习题 346

第12章 中断 348

12.1 基本中断处理 348

12.1.1 中断的目的 348

12.1.2 中断 349

12.1.3 中断指令:BOUND、INTO、INT、INT3和IRET 351

12.1.4 实模式中断操作 351

12.1.5 保护模式中断操作 352

12.1.6 中断标志位 352

12.1.7 将一个中断向量存入向量表 353

12.2 硬件中断 354

12.2.1 INTR和INTA 355

12.2.2 82C55键盘中断 358

12.3 扩展中断结构 360

12.3.1 使用74ALS244扩展 360

12.3.2 菊花链中断 361

12.4 8259A可编程中断控制器 362

12.4.1 8259A概述 362

12.4.2 连接单个8259A 363

12.4.3 级联多个8259A 364

12.4.4 8259A编程 364

12.4.5 8259A编程实例 368

12.5 中断实例 375

12.5.1 实时时钟 375

12.5.2 中断处理键盘 377

12.6 小结 379

12.7 习题 379

第13章 直接存储器存取及DMA控制I/O 381

13.1 基本DMA操作 381

13.2 8237 DMA控制器 382

13.2.1 软件命令 386

13.2.2 地址寄存器和计数寄存器编程 386

13.2.3 8237与80X86微处理器相连 387

13.2.4 用8237进行存储器到存储器传输 387

13.2.5 DMA处理的打印机接口 392

13.3 共享总线操作 394

13.3.1 定义的总线类型 395

13.3.2 总线仲裁器 395

13.4 磁盘存储系统 400

13.4.1 软盘存储器 400

13.4.2 笔式驱动器 403

13.4.3 硬盘存储器 403

13.4.4 光盘存储器 405

13.5 视频显示器 406

13.5.1 视频信号 407

13.5.2 TTL RGB显示器 407

13.5.3 模拟RGB显示器 408

13.6 小结 411

13.7 习题 412

第14章 算术协处理器、MMX和SIMD技术 413

14.1 算术协处理器的数据格式 413

14.1.1 带符号的整数 413

14.1.2 二进制编码的十进制(BCD) 414

14.1.3 浮点数 414

14.2 80X87的结构 416

14.3 指令系统 421

14.3.1 数据传送指令 421

14.3.2 算术运算指令 422

14.3.3 比较指令 423

14.3.4 超越运算指令 424

14.3.5 常数操作指令 424

14.3.6 协处理器控制指令 424

14.3.7 协处理器指令 426

14.4 算术协处理器编程 438

14.4.1 计算圆的面积 438

14.4.2 求谐振频率 439

14.4.3 使用一元二次方程求根 440

14.4.4 使用内存数组存储结果 441

14.4.5 将单精度浮点数转换为字符串 442

14.5 MMX技术简介 443

14.5.1 数据类型 443

14.5.2 指令系统 444

14.6 SSE技术概述 452

14.6.1 浮点数 453

14.6.2 指令集 454

14.6.3 控制/状态寄存器 454

14.6.4 编程实例 455

14.6.5 优化 458

14.7 小结 458

14.8 习题 459

第15章 总线接口 461

15.1 ISA总线 461

15.1.1 ISA总线的发展 461

15.1.2 8位ISA总线输出接口 461

15.1.3 8位ISA总线输入接口 466

15.1.4 16位ISA总线 468

15.2 外围部件互连(PCI)总线 468

15.2.1 PCI总线的引脚图 469

15.2.2 PCI总线的地址/数据线 469

15.2.3 配置空间 470

15.2.4 PCI总线的BIOS 472

15.2.5 PCI接口 474

15.2.6 PCI Express总线 474

15.3 并行打印机接口(LPT) 475

15.3.1 端口介绍 475

15.3.2 使用并行端口而不需要ECP支持 477

15.4 串行COM端口 477

15.5 通用串行总线(USB) 480

15.5.1 连接器 480

15.5.2 USB数据 480

15.5.3 USB命令 481

15.5.4 USB总线节点 482

15.5.5 USBN9604/3编程 482

15.6 加速图形端口(AGP) 485

15.7 小结 485

15.8 习题 485

第16章 80186、80188及80286微处理器 487

16.1 80186/80188的结构 487

16.1.1 80186/80188的型号 487

16.1.2 80186基本结构框图 488

16.1.3 80186/80188基本特征 488

16.1.4 引脚 490

16.1.5 直流工作特性 492

16.1.6 80186/80188时序 492

16.2 80186/80188增强功能编程 495

16.2.1 外设控制块(PCB) 495

16.2.2 80186/80188的中断 495

16.2.3 中断控制器 496

16.2.4 定时器 500

16.2.5 DMA控制器 505

16.2.6 片选单元 507

16.3 80C188EB接口举例 510

16.4 实时操作系统(RTOS) 516

16.4.1 实时操作系统(RTOS)概述 516

16.4.2 实例系统 517

16.4.3 线程系统 519

16.5 80286简介 523

16.5.1 硬件特性 523

16.5.2 新增指令 524

16.5.3 虚拟存储机 525

16.6 小结 526

16.7 习题 526

第17章 80386和80486微处理器 528

17.1 80386微处理器简介 528

17.1.1 存储系统 530

17.1.2 输入/输出系统 536

17.1.3 存储器和I/O控制信号 537

17.1.4 时序 537

17.1.5 等待状态 538

17.2 特定的80386寄存器 538

17.2.1 控制寄存器 538

17.2.2 调试和测试寄存器 540

17.3 80386存储管理 541

17.3.1 描述符和选择子 541

17.3.2 描述符表 544

17.3.3 任务状态段(TSS) 545

17.4 向保护模式转换 547

17.5 虚拟8086模式 556

17.6 内存分页机制 557

17.6.1 页目录 557

17.6.2 页表 557

17.7 80486微处理器简介 559

17.7.1 80486DX和80486SX微处理器的引脚 560

17.7.2 80486的基本结构 563

17.7.3 80486的存储系统 564

17.8 小结 566

17.9 习题 566

第18章 Pentium和Pentium Pro微处理器 568

18.1 Pentium微处理器简介 568

18.1.1 存储系统 571

18.1.2 输入/输出系统 572

18.1.3 系统时序 572

18.1.4 分支预测逻辑 574

18.1.5 高速缓存结构 574

18.1.6 超标量体系结构 574

18.2 Pentium的特定寄存器 574

18.2.1 控制寄存器 574

18.2.2 EFLAG寄存器 575

18.2.3 内置自检(BIST) 575

18.3 Pentium的存储管理 576

18.3.1 分页单元 576

18.3.2 存储管理模式 576

18.4 Pentium的新指令 577

18.5 Pentium Pro微处理器简介 581

18.5.1 Pentium Pro的内部结构 582

18.5.2 引脚连接 583

18.5.3 存储系统 586

18.5.4 输入/输出系统 587

18.5.5 系统时序 587

18.6 Pentium Pro的特性 587

18.7 小结 588

18.8 习题 589

第19章 Pentium Ⅱ、Pentium Ⅲ、Pentium 4和Core2微处理器 590

19.1 Pentium Ⅱ微处理器简介 590

19.1.1 存储系统 595

19.1.2 输入/输出系统 596

19.1.3 系统时序 596

19.2 Pentium Ⅱ软件变化 597

19.2.1 CPUID指令 597

19.2.2 SYSENTER和SYSEXIT指令 597

19.2.3 FXSAVE和FXRSTOR指令 598

19.3 Pentium Ⅲ 598

19.3.1 芯片组 598

19.3.2 总线 598

19.3.3 引脚 599

19.4 Pentium 4和Core2 600

19.4.1 存储器接口 600

19.4.2 寄存器组 601

19.4.3 超线程技术 602

19.4.4 多核技术 602

19.4.5 CPUID 602

19.4.6 特定模型寄存器 605

19.4.7 性能监视寄存器 605

19.4.8 64位扩展技术 606

19.5 小结 607

19.6 习题 607

附录A 汇编程序、Visual C++和DOS 608

附录B 指令系统一览 614

附录C 标志位的变化 674

附录D 偶数号习题的答案 676