Intel微处理器
2010年6月
机械工业出版社
(美)Barry B Brey
691
金惠华,艾明晶,尚利宏
无
这本讲述Intel系列微处理器程序设计和接口技术的参考书已经是第8版了。随着技术的发展和进步,作者多次改编增补删减,与时俱进,吐故纳新,在选材、知识点配置和编程环境选择方面充分体现了先进性和实用性。与前几版相比,第8版主要增加了讲解在DOS和Windows环境下如何使用可自由下载的Visual C++ Express编写C/C++与汇编语言的接口,说明了在微处理器和微处理器接口方面出现的新成果。 本书的特点是: 取材涵盖微机原理、汇编语言和接口通信技术的教学要求和知识点,各部分有机整合,适合国内教学要求。 以Intel系列微处理器为背景,以DOS、Windows和Visual C/C++为编程环境,通过示例为读者深入揭示了微机工作原理和最新技术进步。许多示例都可以作为读者开发类似应用的样板或原型,指引读者开发新的应用。 每章开头提示本章学习目的,末尾概要总结知识要点,最后有大量习题检验学习成果。编排符合学习规律,适合读者自学。 这是一本非常实用的教材,有助于读者彻底掌握Intel系列微处理器程序设计和接口技术,灵活自如地使用微机的各种资源,解决学习和开发工作中的实际问题。 本书由金惠华译第16章,艾明晶译第915章,尚利宏译第1619章,高洁译第7章,郝广奇译第8章,李雅倩译附录,崔代锐、尚利荣、邓媛、刘云峰、徐其志参与了部分章节初译、示例习题核对及文稿录入。全书由金惠华统稿审校。译稿对原书中的笔误和疏漏进行了更正。由于译审者水平有限,译文中难免有不妥之处,敬请读者批评指正。
《Intel微处理器(原书第8版)》重点讲解Intel系列微处理器(8086/8088、80186/80188、80286、80386、80486、Pentium、Pentium Pro Processor、Pentium Ⅱ、Pentium Ⅲ、Pentium 4和Core2)的体系结构、程序设计和接口通信技术,并通过微型计算机原理把三者有机地整合在一起。《Intel微处理器(原书第8版)》以Intel系列微处理器为背景,以DOS、Windows和Visual C/C++为编程环境,通过示例为读者深入揭示了微型计算机工作原理和最新的技术进步。许多示例都可以作为开发类似应用的样板或原型,用以指引开发新的应用。 《Intel微处理器(原书第8版)》适合作为高等院校计算机、电子通信和自动控制等专业教材,也可供工程技术人员参考。
作者:(美国)布雷(Barry B.Brey) 译者:金惠华 艾明晶 尚利宏 等布雷(Barry B.Brey),德福瑞大学(DeVry University)荣誉退休教授。他是美国关于微处理器和汇编语言著作的主要作者,至今著有33部教材。
出版者的话译者序前言第1章 微处理器和计算机导论1.1 历史背景1.1.1 机械时代1.1.2 电子时代1.1.3 程序设计的进步1.1.4 微处理器时代1.1.5 现代微处理器1.2 基于微处理器的PC系统1.2.1 存储器和I/O系统1.2.2 微处理器1.3 数制1.3.1 数字1.3.2 按位计数法1.3.3 其他数制转换到十进制1.3.4 十进制转换成其他进制1.3.5 二进制编码的十六进制1.3.6 补码1.4 计算机数据格式1.4.1 ASCII和Unicode数据1.4.2 BCD数据1.4.3 字节数据1.4.4 字数据1.4.5 双字数据1.4.6 实数1.5 小结1.6 习题第2章 微处理器及其体系结构2.1 微处理器的内部体系结构2.1.1 程序设计模型2.1.2 多功能寄存器2.2 实模式存储器寻址2.2.1 段和偏移2.2.2 默认段和偏移寄存器2.2.3 段和偏移寻址机制允许重定位2.3 保护模式存储器寻址简介2.3.1 选择子和描述符2.3.2 程序不可见寄存器2.4 内存分页2.4.1 分页寄存器2.4.2 页目录和页表2.5 平展模式内存2.6 小结2.7 习题第3章 寻址方式3.1 数据寻址方式3.1.1 寄存器寻址3.1.2 立即寻址3.1.3 直接数据寻址3.1.4 寄存器间接寻址3.1.5 基址加变址寻址3.1.6 寄存器相对寻址3.1.7 相对基址加变址寻址3.1.8 比例变址寻址3.1.9 RIP相对寻址3.1.10 数据结构3.2 程序存储器寻址3.2.1 直接程序存储器寻址3.2.2 相对程序存储器寻址3.2.3 间接程序存储器寻址3.3 堆栈存储器寻址3.4 小结3.5 习题第4章 数据传送指令4.1 MOV回顾4.1.1 机器语言4.1.2 Pentium4和Core2的64位模式4.2 PUSH/POP指令4.2.1 PUSH指令4.2.2 POP指令4.2.3 初始化堆栈4.3 装入有效地址4.3.1 LEA指令4.3.2 LDS、LES、LFS、LGS和LSS指令4.4 数据串传送4.4.1 方向标志4.4.2 DI和SI4.4.3 LODS指令4.4.4 STOS指令4.4.5 MOVS指令4.4.6 INS指令4.4.7 OUTS指令4.5 其他数据传送指令4.5.1 XCHG指令4.5.2 LAHF和SAHF指令4.5.3 XLAT指令4.5.4 IN和OUT指令4.5.5 MOVSX和MOVZX指令4.5.6 BSWAP指令4.5.7 CMOV指令4.6 段超越前缀4.7 汇编程序详述4.7.1 伪指令4.7.2 存储器组织4.7.3 程序举例4.8 小结4.9 习题第5章 算术和逻辑运算指令5.1 加法、减法和比较指令5.1.1 加法指令5.1.2 减法指令5.1.3 比较指令5.2 乘法和除法指令5.2.1 乘法指令5.2.2 除法指令5.3 BCD码和ASCII码算术运算指令5.3.1 BCD算术运算指令5.3.2 ASCII算术运算指令5.4 基本逻辑运算指令5.4.1 AND指令5.4.2 OR指令5.4.3 XOR指令5.4.4 测试和位测试指令5.4.5 NOT指令和NEG指令5.5 移位指令和循环移位指令5.5.1 移位指令5.5.2 双精度移位指令5.5.3 循环移位指令5.5.4 位扫描指令5.6 串比较指令5.6.1 SCAS指令5.6.2 CMPS指令5.7 小结5.8 习题第6章 程序控制指令6.1 转移指令6.1.1 无条件转移指令6.1.2 条件转移和条件设置6.1.3 LOOP指令6.2 控制汇编语言程序的流程6.2.1 WHILE循环6.2.2 REPEATUNTIL循环6.3 过程6.3.1 CALL指令6.3.2 RET指令6.4 中断概述6.4.1 中断向量6.4.2 中断指令6.4.3 中断控制6.4.4 PC机的中断6.4.5 64位模式中断6.5 机器控制及其他指令6.5.1 控制进位标志位6.5.2 WAIT指令6.5.3 HLT指令6.5.4 NOP指令6.5.5 LOCK前缀6.5.6 ESC指令6.5.7 BOUND指令6.5.8 ENTER和LEAVE指令6.6 小结6.7 习题第7章 在C/C++中使用汇编语言7.1 在16位DOS应用程序中使用汇编语言与C/C++语言7.1.1 基本规则和简单程序7.1.2 _asm块中不能使用的MASM功能7.1.3 使用字符串7.1.4 使用数据结构7.1.5 混合语言编程的例子7.2 在32位应用程序中使用汇编语言与VisualC/C++语言7.2.1 使用控制台I/O访问键盘和显示器的例子7.2.2 直接访问I/O端口7.2.3 开发Windows的VisualC++应用程序7.3 汇编和C++混合目标码7.3.1 用VisualC++链接汇编语言7.3.2 在C/C++程序中添加新的汇编语言指令7.4 小结7.5 习题第8章 微处理器程序设计8.1 模块化程序设计8.1.1 汇编程序和链接程序8.1.2 PUBLIC和EXTRN8.1.3 库8.1.4 宏8.2 使用键盘和视频显示器8.2.1 读取键盘8.2.2 使用视频显示器8.2.3 在程序中使用定时器8.2.4 鼠标8.3 数据转换8.3.1 二进制转换为ASCII码8.3.2 ASCII码转换为二进制8.3.3 显示和读入十六进制数8.3.4 使用查找表实现数据转换8.3.5 使用查找表的示例程序8.4 磁盘文件8.4.1 磁盘的组织8.4.2 文件名8.4.3 顺序存取文件8.4.4 随机存取文件8.5 程序举例8.5.1 时间/日期显示程序8.5.2 数字排序程序8.5.3 数据加密8.6 小结8.7 习题第9章 8086/8088硬件特性9.1 引脚和引脚功能9.1.1 引脚9.1.2 电源要求9.1.3 直流特性9.1.4 引脚定义9.2 时钟产生器8284A9.2.1 8284A时钟产生器9.2.2 8284A的操作9.3 总线缓冲及锁存9.3.1 多路分离总线9.3.2 缓冲系统9.4 总线时序9.4.1 基本的总线操作9.4.2 一般的时序9.4.3 读时序9.4.4 写时序9.5 就绪和等待状态9.5.1 READY输入9.5.2 RDY和8284A9.6 最小模式与最大模式9.6.1 最小模式操作9.6.2 最大模式操作9.6.3 8288总线控制器9.7 小结9.8 习题第10章 存储器接口10.1 存储器器件10.1.1 存储器引脚10.1.2 ROM存储器10.1.3 静态RAM(SRAM)器件10.1.4 动态RAM(DRAM)存储器10.2 地址译码10.2.1 为什么要进行存储器译码10.2.2 简单的与非门译码器10.2.3 3-8线译码器(74LS138)10.2.4 双2-4线译码器(74LS139)10.2.5 PLD可编程译码器10.3 8088和80188(8位)存储器接口10.3.1 基本的8088/80188存储器接口10.3.2 与快闪存储器接口10.3.3 错误校正10.4 8086、80186、80286和80386SX(16位)存储器接口10.5 80386DX和80486(32位)存储器接口10.5.1 存储体10.5.2 32位存储器接口10.6 PentiumCore2(64位)存储器接口10.7 DRAM10.7.1 DRAM回顾10.7.2 EDO存储器10.7.3 SDRAM10.7.4 DDR10.7.5 DRAM控制器10.8 小结10.9 习题第11章 基本I/O接口11.1 I/O接口概述11.1.1 I/O指令11.1.2 独立编址I/O与存储器映像I/O11.1.3 PC机I/O映像11.1.4 基本输入输出接口11.1.5 握手11.1.6 关于接口电路的注释11.2 I/O端口地址译码11.2.1 译码8位I/O地址11.2.2 译码16位I/O地址11.2.3 8位与16位I/O端口11.2.4 32位I/O端口11.3 可编程外围设备接口11.3.1 82C55基本描述11.3.2 82C55编程11.3.3 方式0操作11.3.4 与82C55接口的LCD显示器11.3.5 方式1选通输入11.3.6 方式1选通输出11.3.7 方式2双向操作11.3.8 82C55方式小结11.3.9 串行EEPROM接口11.4 8254可编程间隔定时器11.4.1 8254功能描述11.4.2 8254编程11.4.3 直流电机速度与方向控制11.5 16550可编程通信接口11.5.1 异步串行数据11.5.2 16550功能描述11.5.3 16550编程11.6 模/数转换器(ADC)与数/模转换器(DAC)11.6.1 DAC0830数/模转换器11.6.2 ADC080X模/数转换器11.6.3 使用ADC0804和DAC0830的实例11.7 小结11.8 习题第12章 中断12.1 基本中断处理12.1.1 中断的目的12.1.2 中断12.1.3 中断指令:BOUND、INTO、INT、INT3和IRET12.1.4 实模式中断操作12.1.5 保护模式中断操作12.1.6 中断标志位12.1.7 将一个中断向量存入向量表12.2 硬件中断12.2.1 INTR和INTA12.2.2 82C55键盘中断12.3 扩展中断结构12.3.1 使用74ALS244扩展12.3.2 菊花链中断12.4 8259A可编程中断控制器12.4.1 8259A概述12.4.2 连接单个8259A12.4.3 级联多个8259A12.4.4 8259A编程12.4.5 8259A编程实例12.5 中断实例12.5.1 实时时钟12.5.2 中断处理键盘12.6 小结12.7 习题第13章 直接存储器存取及DMA控制I/O13.1 基本DMA操作13.2 8237DMA控制器13.2.1 软件命令13.2.2 地址寄存器和计数寄存器编程13.2.3 8237与80X86微处理器相连13.2.4 用8237进行存储器到存储器传输13.2.5 DMA处理的打印机接口13.3 共享总线操作13.3.1 定义的总线类型13.3.2 总线仲裁器13.4 磁盘存储系统13.4.1 软盘存储器13.4.2 笔式驱动器13.4.3 硬盘存储器13.4.4 光盘存储器13.5 视频显示器13.5.1 视频信号13.5.2 TTLRGB显示器13.5.3 模拟RGB显示器13.6 小结13.7 习题第14章 算术协处理器、MMX和SIMD技术14.1 算术协处理器的数据格式14.1.1 带符号的整数14.1.2 二进制编码的十进制(BCD)14.1.3 浮点数14.2 80X87的结构14.3 指令系统14.3.1 数据传送指令14.3.2 算术运算指令14.3.3 比较指令14.3.4 超越运算指令14.3.5 常数操作指令14.3.6 协处理器控制指令14.3.7 协处理器指令14.4 算术协处理器编程14.4.1 计算圆的面积14.4.2 求谐振频率14.4.3 使用一元二次方程求根14.4.4 使用内存数组存储结果14.4.5 将单精度浮点数转换为字符串14.5 MMX技术简介14.5.1 数据类型14.5.2 指令系统14.6 SSE技术概述14.6.1 浮点数14.6.2 指令集14.6.3 控制/状态寄存器14.6.4 编程实例14.6.5 优化14.7 小结14.8 习题第15章 总线接口15.1 ISA总线15.1.1 ISA总线的发展15.1.2 8位ISA总线输出接口15.1.3 8位ISA总线输入接口15.1.4 16位ISA总线15.2 外围部件互连(PCI)总线15.2.1 PCI总线的引脚图15.2.2 PCI总线的地址/数据线15.2.3 配置空间15.2.4 PCI总线的BIOS15.2.5 PCI接口15.2.6 PCIExpress总线15.3 并行打印机接口(LPT)15.3.1 端口介绍15.3.2 使用并行端口而不需要ECP支持15.4 串行COM端口15.5 通用串行总线(USB)15.5.1 连接器15.5.2 USB数据15.5.3 USB命令15.5.4 USB总线节点15.5.5 USBN9604/3编程15.6 加速图形端口(AGP)15.7 小结15.8 习题第16章 80186、80188及80286微处理器16.1 80186/80188的结构16.1.1 80186/80188的型号16.1.2 80186基本结构框图16.1.3 80186/80188基本特征16.1.4 引脚16.1.5 直流工作特性16.1.6 80186/80188时序16.2 80186/80188增强功能编程16.2.1 外设控制块(PCB)16.2.2 80186/80188的中断16.2.3 中断控制器16.2.4 定时器16.2.5 DMA控制器16.2.6 片选单元16.3 80C188EB接口举例16.4 实时操作系统(RTOS)16.4.1 实时操作系统(RTOS)概述16.4.2 实例系统16.4.3 线程系统16.5 80286简介16.5.1 硬件特性16.5.2 新增指令16.5.3 虚拟存储机16.6 小结16.7 习题第17章 80386和80486微处理器17.1 80386微处理器简介17.1.1 存储系统17.1.2 输入/输出系统17.1.3 存储器和I/O控制信号17.1.4 时序17.1.5 等待状态17.2 特定的80386寄存器17.2.1 控制寄存器17.2.2 调试和测试寄存器17.3 80386存储管理17.3.1 描述符和选择子17.3.2 描述符表17.3.3 任务状态段(TSS)17.4 向保护模式转换17.5 虚拟8086模式17.6 内存分页机制17.6.1 页目录17.6.2 页表17.7 80486微处理器简介17.7.1 80486DX和80486SX微处理器的引脚17.7.2 80486的基本结构17.7.3 80486的存储系统17.8 小结17.9 习题第18章 Pentium和PentiumPro微处理器18.1 Pentium微处理器简介18.1.1 存储系统18.1.2 输入/输出系统18.1.3 系统时序18.1.4 分支预测逻辑18.1.5 高速缓存结构18.1.6 超标量体系结构18.2 Pentium的特定寄存器18.2.1 控制寄存器18.2.2 EFLAG寄存器18.2.3 内置自检(BIST)18.3 Pentium的存储管理18.3.1 分页单元18.3.2 存储管理模式18.4 Pentium的新指令18.5 PentiumPro微处理器简介18.5.1 PentiumPro的内部结构18.5.2 引脚连接18.5.3 存储系统18.5.4 输入/输出系统18.5.5 系统时序18.6 PentiumPro的特性18.7 小结18.8 习题第19章 PentiumⅡ、PentiumⅢ、Pentium4和Core2微处理器19.1 PentiumⅡ微处理器简介19.1.1 存储系统19.1.2 输入/输出系统19.1.3 系统时序19.2 PentiumⅡ软件变化19.2.1 CPUID指令19.2.2 SYSENTER和SYSEXIT指令19.2.3 FXSAVE和FXRSTOR指令19.3 PentiumⅢ19.3.1 芯片组19.3.2 总线19.3.3 引脚19.4 Pentium4和Core219.4.1 存储器接口19.4.2 寄存器组19.4.3 超线程技术19.4.4 多核技术19.4.5 CPUID19.4.6 特定模型寄存器19.4.7 性能监视寄存器19.4.8 64位扩展技术19.5 小结19.6 习题附录A 汇编程序、VisualC++和DOS附录B 指令系统一览附录C 标志位的变化附录D 偶数号习题的答案
插图:
《Intel微处理器(原书第8版)》:这是一本将微型计算机原理、汇编语言程序设计和PC机接口通信技术有机整合在一起的著作,可作为高等院校计算机、通信和自动控制专业的教材,也可供工程技术人员参考。《Intel微处理器(原书第8版)》主要内容采用200多个相关编程实例(许多用Visual C++及嵌入式汇编语言编写)来阐述基本概念。开发软件,控制应用系统与微处理器接口。用嵌入汇编语言的Microsoft Vistual C++程序设计环境编写微处理器程序,控制PC机。开发软件,控制键盘、显示器及其他各种计算机部件。编写算术协处理器程序、MMX程序、SSE部件程序,求解复杂方程式。解释Intel系列各种处理器的区别,明确每一型号的特性。描述微处理器实模式(DOS)和保护模式(Windows)的用途。说明存储器管理操作,控制保护模式和分页机制,分配存储器。设计存储器、I/O系统到微处理器的接口。开发驱动硬件接口和应用系统的软件。解释嵌入式环境中实时操作系统(RTOS)的工作。解释磁盘及视频系统的操作。建立小型系统与PC机的ISA总线、PCI总线、并口或串口、LJSB总线之间的接口。详述Pentium 4微处理器新的64位扩展(EMT-64)。覆盖最新的Pentium 4和Core2处理器的内容,包括如何基于Pentium Core2及其新的64位体系化结构编程。在DOS或者Windows环境下,如何使用Visual C++Express编写C/C++与汇编程序接口的内容。针对微处理器领域的最新进展进行了更新。
无
又是一群人翻译的,我这阵子学习处理器,这本书是经典无庸置疑,但好多地方被翻译糟蹋了。第3页,/**引用段开始**/比起C#更贴近硬件,它更加表面;现实点可能取代C/C++作这一种科学语言,但这值得怀疑,可能最终替换BASIC/**引用段结束**/读时一头雾水,BASIC比C#好,会取代C和C++,还能替换BASIC自己,真是猪翻译啊!找了电子书查看原文It is more apparent that the C# language is gaining headway and may actually replace C/C++ and most other languages including Java and may eventually replace BASIC.作者是在说C#更可能取代C/C++,甚至BASIC。反正好多地方翻译得驴头不对马嘴,买时慎重!
首先,这不仅仅是一本关于微处理器的书,这本书设计的范围很是广泛,不仅有微处理器的信号分析,还有存储器件的时序图。到后面各种总线的介绍,还是比较详细的。还有就是对SIMD的说明,应该也是国内书很少见到的内容。有一点很不满意!翻译不行。
这种书,还是买一本,不要到图书馆借了
内容丰富,全面,就是翻译太生硬了,句子不顺畅。
哈哈!调试逆向必备!非常喜欢!不知道翻译怎么样
这本书仅次于英特尔手册。是学习处理器架构的必备教材,很经典~
包装质量很好,没有折损或缺页的情况。内容难度中等偏上(个人觉得),在研读中
怎么看怎么疼啊。书开头的胶让我弄断了看书的时候不自觉的翻到那里。怎么看怎么疼啊。。。。。。。。。。。。。。。。。。。。。。。
嗯,书的纸质还不错。。
一部很好的 详述 Intel处理器结构的书籍
不咋样,不知道是原书就不行呢还是翻译的问题,感觉翻译很生硬
质量不错, 送货很快
上佳之作
x86经典书籍
书挺不错,纸张还行
很经典的一本书!!
已经看完了,书不错,但跟想象中的不太一样