
本书以全新的视角详述了高级微处理器的原理和应用,内容详实,图表丰富。首先从微处理器的基本概念出发,在讲述其设计思想和体系结构的同时,重点介绍它在各种微处理器系统设计中的高级应用。每部分内容既有具体的电路示例,又有完整的设计分析,还包括许多实用的设计技巧。
本书既可作为高等院校计算机专业及相关专业本科生、研究生的经典教材,也可作为微处理器系统设计工程师案头必备的实践参考手册。
内 容 提 要
本书以全新的视角讲述高级微处理器的原理和应用,内容详实,图表丰富。本书从微处理器的基本概念出发,在讲述其设计思想和体系结构的同时,重点介绍它在各种围绕微处理器进行设计的系统中的高级应用,每部分内容既有具体的电路实例,又有完整的设计分析,还包括许多珍贵的设计技巧。
全书共分17章。第1章以非常详尽的篇幅介绍了英特尔公司的16位微处理器8086/8088,包括其体系结构、引脚分布及时序分析。第2章在第1章内容的基础上,继续讲述8086/8088的指令集与汇编命令。第3章继续讲述8086/8088汇编语言程序设计思想,详细讲述了如何设计汇编程序,并给出了大量的程序示例。第4章更进一步讲述了8086/8088的一些专有体系结构特征,并给出相关的程序设计技术。通过阅读这4章内容,读者将对8086/8088从基本概念到编程应用都能得到非常透彻的认识。第5~7章将重点放在外设上。第5章给读者介绍了一些通用的外设,例如,I/O端口、键盘、显示器、ADC、DAC、步进式引擎等,并详细讲述了如何将这些外设和8086/8088进行连接。第6章则介绍了一些专用外设,包括可编程计数器/定时器、可编程中断控制器、键盘/显示控制器以及可编程通信接口8251,同样讲述了其与8086/8088的接口连接和编程技术。第7章则按同样的方式详述了DMA、软盘和CRT控制器及其接口技术。第8章在介绍多处理器体系结构的同时,讲述了可用于构成多处理器系统的数值处理器8087和I/O处理器8089,该章内容主要为后面讲述更高级的微处理器作铺垫。第9~12章依次介绍了80286/80287、80386/80387、80486、80586(即Pentium)、Pentium Pro直到Pentium 4这一系列英特尔微处理器大家庭中的成员,从基本体系结构、指令集到每个微处理器的显著特性,都做了非常详尽的描述。第13章则简单介绍了RISC体系结构这一微处理器研究领域中的重要分支。第14~16章给出了一些围绕微处理器进行设计的较为复杂的应用示例,包括基于微处理器的铝冶炼控制系统、基于微处理器的模式扫描系统和电子称量台的设计。这3个示例是对微处理器实际应用的最好阐述。最后一章,也就是第17章,作者以紧凑的文字讲述了微控制器8051和80196,并给出了一个设计示例。
本书的读者群非常广泛,既是一本适合大学教师和高年级本科生、研究生使用的很好的教学、学习参考书,也是微处理器系统设计工程师案头必备的实践参考手册。本书中的许多编程示例和应用设计示例既可以直接用于课堂教学和练习,也可以直接或间接地用作工程实践的设计参考。
译 者 序
微处理器是计算机系统的心脏,从它诞生的那一天开始,就注定了它要为这个世界带来翻天覆地的变化。如今看来,微处理器已经无处不在,不论是个人计算机还是商用服务器,不论是MP3、PDA还是数字式微波炉,都离不开大大小小的微处理器。然而,深入了解微处理器,包括其基本体系结构、指令集、操作时序,以及为了提高性能而不断集成进去的先进技术和设计理念等,却不是一件容易的事情。从译者在这个领域多年的学习和研究经历来看,微处理器研究领域是一个门槛较高的领域,对其进行全面深入的掌握需要多年的历练和经验的积累。本书的面市,无疑为微处理器设计研究者和爱好者提供了一个很好的途径。本书不仅讲述了关于先进微处理器的基本概念,更以详尽的篇幅给出了其具体应用。理论研究者和工程实践者都能从中受益。可以说,本书既是很好的微处理器教学参考书,也是很好的工程实践参考书。
本书几乎向人们展现了整个英特尔微处理器的发展史。译者在翻译的过程中,感受到的是一种由浅入深、行云流水的心境。从最初的16位微处理器8086/8088开始,一直讲到复杂的高端微处理器Pentium 4,从基本设计思想的形成,到体系结构和指令集的设计,再到信号描述、寻址方式、操作时序这些必须了解的信息;从一款微处理器向另一款微处理器过渡时的需求,到为了提高性能而加入何种先进技术……作者都讲得丝丝入扣。不仅如此,本书的最大特色就是在讲述理论知识的同时,给出了相当多的编程示例和具体应用示例,对于长期从事理论研究的读者来说,本书无疑提供了一条快速进行工程设计的捷径。而对于长期从事工程实践的人来说,又能把本书当作理论基础和参考手册。因而我们相信,任何从事体系结构和微处理器设计领域工作的人们,任何希望能快速、准确地设计基于微处理器的系统的人们,都会从本书的阅读中受益匪浅,这也是我们愿意翻译该书的原因所在。
受益于此书有余,不揣冒昧地为本书的读者们建议一条高效的阅读途径。本书的内容可以分为4个部分,第1部分由第1~4章组成,围绕英特尔公司的16位微处理器8086/8088进行了详尽而全面的讲述。包括体系结构、引脚信号分布及意义、操作时序、指令集定义、汇编指令及汇编程序设计思想及示例,还有其专属的一些特征和编程方法等。俗话说,“万变不离其宗”,英特尔公司后续的先进处理器都是从8086/8088演变而来的。因此可以说,该部分内容是任何从事体系结构和微处理器设计工作的人们不可或缺的基础知识,需要仔细地阅读,认真地领悟。第2部分由第5~7章组成,讲述各种外设。从通用外设到专用外设,再到较复杂的专用外设,都进行了详细的讲述。从事微处理器系统设计工作的人们可以根据自己的研究方向和实践内容有选择性地阅读与工作相关的内容,这部分为工程实践提供了很好的参考。第3部分由第8~13章(包括第17章)组成,一直从80286/80287讲到Pentium 4。这是一个跟随历史前进的历程,读者自会体会其中趣味。第4部分由第14~16章组成,给出了3个基于微处理器进行设计的系统示例。在阅读过程中,你将会发现许多新鲜生动而又非常深刻的东西,会发现许多你本该知道而至今尚未知晓的东西,这也是我们在阅读和翻译该书过程中的切身体会。
严复在《译例言》中提出:“译事三难,信、达、雅”,这也是本书译者力求达到的境界,希望在严谨地讲述科学知识的同时,给读者以美的享受。幸运的是,对本书的译者来说,全书讨论的正是译者们最为熟知的研究领域。这次翻译的前提是对原文的彻底领会,因此不存在任何技术细节会因为译者的生疏而发生扭曲。为了力求尽善尽美,我们仍然结合自己多年的体系结构和微处理器设计的知识和经验,遵从教科书的习惯用法,参考了《英汉计算机词典》、《英汉电子信息与技术词汇》、《英汉电子学名词》等,并请教了该领域的一些专家,力求做到准确无误。对于一些应用示例中不是很明确的术语,我们也参考了很多相关书籍,并从因特网上寻求帮助。对于一些重要的术语,还同时给出了中英文对照文本,以方便读者查阅更多的参考资料。
本书主要由岳虹和张波涛翻译。肖国尊负责本书翻译思想的指导、进度和质量的把控,对本书的翻译和出版做了大量的协调和规范工作,在此予以衷心感谢。
译文虽经多次修改和校正,但是由于译者的水平有限,加之时间仓促,疏漏及不足之外在所难免,我们真诚地希望同行和读者不吝赐教,请将您的反馈信息发送至wkservice@vip.163.com,我们将不胜感激。
岳虹于榕城
第2版序
自从本书的第1版在2000年出版之后,大量的先进微处理器,诸如基于Net Burst 微体系结构的Pentium 4等陆续问世。微处理器体系结构的发展异常迅速,来自不同领域的理工科本科生和大学毕业生对该主题产生了浓厚的兴趣。
本书的第1版在整个印度及国外某些地区,得到了众多学科的教师和学生的广泛关注和使用。我们也收到了大量关于提高本书质量的宝贵建议和意见。这些建议以及我们自身对本书的评价,形成了对第一版的内容和表述方式进行修订的主要基础。
在这一版中,我们加入了两章新内容,同时删除了一章。“Pentium 4——21世纪的微处理器”这一章详细介绍了Pentium 4的体系结构,超标量执行、执行Trace Cache、快速执行引擎、流式SIMD扩展等一些新概念也在该章中得到了很好的阐述。随着基于混合CISC-RISC体系结构的微处理器的大量面世,了解RISC处理器的基本特征和设计理念对于学生来说已经变得非常必要。基于该需要,我们加入了全新的篇章“RISC体系结构概述”。而“系统软件和操作系统”这一章则从这一版中删除。不过这章的内容可以通过访问本书的在线学习中心获取。基于读者的需求,我们对余下的章节也进行了适当的修改和重写。
我们希望第2版也和第1版一样,受到读者的青睐。
Ajoy Kumar Ray
Kishor M Bhurchandi
第1版序
自1971年英特尔公司第一款4位微处理器4004问世以来,数字系统设计领域内发生的无声变革影响了当代科技进程的方方面面。在过去的28年中,整个世界都见证了微处理器的演变,其对当今科技发展所产生的影响无疑是巨大的。
微处理器的演变归功于半导体工艺技术的飞速发展。第一款微处理器4004仅包含近万个晶体管,在不到10年的时间里,晶体管密度翻了三番。在4004问世后不久,英特尔公司在1972年又推出了第一款8位微处理器8008。不过,由于设计思想本身的缺陷,这两个处理器的应用都不甚成功。1974年,英特尔公司发布了第一款通用8位微处理器8080,其功能也不完善。第一款功能完善的8位CPU 8085诞生于1977年。
8085 CPU至今仍然位居所有8位CPU前列。8085 CPU包含了一个片上时钟产生器、优化的寄存器组和功能相对强大的ALU,从而提供了较高的性能。这些8位微处理器的主要局限在于有限的存储空间、缓慢的执行速度、有限的暂存器、复杂指令集及地址模式的低效性。另一点需要强调的是,8085对流水线以及指令并行的支持差强人意,而这两点对于提高计算速度是非常重要的。例如,8085 CPU中的任何一个指令队列的低效,都会导致取操作码和操作数以及指令的执行以完全串行的方式来进行。
英特尔公司的第一款16位CPU是设计者们为了制造出更强大和更有效的计算机而努力的结果。8086 CPU的设计者们注意到了8位CPU的局限性,他们在8086中设计了一组16位的通用寄存器、一个16位的ALU、丰富的指令集,并且提供了存储地址分段机制。8086中用于寻址某段存储空间的段寄存器组的引入,的确是微处理器演变过程中非常重要的一步。所有的这些特征让这款16位处理器变得更加高效。
IBM公司PC(Personal Computer,个人计算机)的发展始于1980年7月。一年之后,也就是1981年8月,基于英特尔8088处理器(和8086的功能相当,但只支持8位的外部数据总线)的第一台计算机问世,包括一个或两个软驱、一副键盘和一台单色显示器。这台计算机的操作系统是微软公司的MS-DOS操作系统的早期版本。1983年3月,名为PC-XT的IBM PC新版本,拥有了一个10MB的硬盘,一个双面双密度软盘驱动器、一副键盘、一台显示器和一个异步通信适配器。实际上,20世纪80年代IBM公司PC的问世在很大程度上对微处理器的演变产生了巨大的影响;而随着每一代新的微处理器的产生,个人计算机的性能也得到了提高。
8086的主要局限在于它没有存储空间地址分段和保护机制,这一点也被公认是20世纪80年代所有微处理器的共同特征。80286是第一款拥有存储地址分段、特权分配和保护能力的CPU。但是,80286 CPU在最大地址段空间上存在限制(只有64Kb);它的另一个缺陷在于,当将它转换到保护模式下时,就很难再回到正常模式,唯一的方法是重启计算机。
20世纪80年代中期,更多的计算需求催生了更快的CPU的出现。80386是英特尔公司的第一款32位CPU。在80386的设计中,英特尔公司对80286的存储管理能力进行了升级,使其能支持虚拟内存、分页以及提供4种级别的保护方式。并且,80386中的段空间最大可以扩大到4Gb,并最多支持16 384个地址段。80386和它的数学协处理器80387一起,提供了高速的运行环境,80486则将数学协处理器集成到了一起。在集成以后,数学运算的执行速度提升了3倍。并且,8Kb的四路组相连指令Cache和数据Cache第一次出现在80486中,同时出现的还有5级的指令流水线。
早期CPU的指令集设计非常粗糙,因为并没有指望那时候的程序员编出多么大型的机器代码程序。一条高级指令可能会被编译成10条甚至上百条机器代码操作。从早期的8位CPU的演变过程中可以看出, CPU的设计趋势是能够支持更复杂的汇编语言级指令。复杂指令集计算机(Complex Instruction Set Computer,CISC)的设计者很想做到这一点。
从微处理器发展初期开始,设计者们已经努力通过设计更复杂的指令来使其性能更高。但是,这些功能强大的指令以及寻址方式其实很难被程序员用到。而实现这些指令所需的逻辑却占用了微处理器硅片的大部分面积。精简指令集计算机(Reduced Instruction Set Computer,RISC)的设计者们则观察到数据移动类的指令经常会被CPU执行,因此他们对CPU进行优化,从而提高了执行这类指令的速度。RISC提供了规整的指令集,它们具有相同的格式,很容易进行流水操作。为了提高处理器性能,可行的方法如下:
(1) 提高处理器时钟频率及系统时钟频率。
(2) 优化和增强指令集。
(3) 在一个时钟周期内执行多条指令,并在CPU的体系结构中实现并行。
第一种方法对CISC处理器和RISC处理器均适用。第二种方法主要适用于CISC,不过对RISC也可行。第三种方法更适用于RISC处理器。从商用RISC CPU的出现开始,关于RISC和CISC性能孰高孰低的争论就没有停止过。RISC体系结构设计者认为RISC指令可以在一个周期内完成,因此比CISC CPU占用更少的时间。这归功于流水线的使用、将指令精简到只有一个简单操作,以及利用编译器将复杂操作合成起来产生代码序列等措施。当RISC机器首次出现在市场上时,CISC处理器每条指令的执行需要6~10个时钟周期,而RISC处理器则可以在一个周期内执行多条简单指令,从而提供了更高的性能。因此之后的CISC处理器借鉴了很多RISC处理器的特征。
本书的编写致力于使其在众多研究的科研与工程分支领域,特别是在电子学、电力学、仪器学、物理和计算机科学等领域,作为大学毕业生和硕士研究生的“高级微处理器”必修课的教科书来使用。本书适合在一个学期之内对高级微处理器的体系结构、编程、硬件接口和应用进行教授。本书的目的是给读者打下良好的微处理器及其原理和实践的基础。我们试图在关于微处理器技术的基本概念和实际应用之间,保持较好的平衡。因此我们致力于做到以下几点:
(1) 讲述先进微处理器及其体系结构的基本概念。
(2) 使学生能够编写高效的8086系列微处理器的汇编语言程序。
(3) 使学生掌握微处理器和外设的连接技术,因此可以自行设计及开发完整的基于微处理器的系统。
(4) 以非常清晰的脉络讲述系统编程的基本概念,即操作系统、汇编器、编译器等,使学生能够全面了解微处理器技术,特别是与微处理器相关的软件方面的技术。
(5) 给学生讲述能够提高数据传输速率的策略及技术。
(6) 给出一系列与微处理器有关的趣味应用。
本书的一些显著特色列举如下。
(1) 本书涵盖了从16位8086处理器到Pentium处理器的所有处理器。读者在逐章阅读时,能够清晰地看到处理器从一种体系结构到另一种体系结构的演变。每种微处理器都使用一个独立的章节进行详细描述。第1章相当详细地介绍了8086/8088体系结构。第9章讲述80286及其协处理器。第10章介绍80386微处理器及其协处理器80387。第10章也用很大的篇幅讲述了80486,包括其集成CPU和内嵌的数学协处理器。英特尔公司微处理器系列中的最新款处理器Pentium也在第11章中进行了简单的介绍。
(2) 本书的一个显著特色在于给出了很多有趣的微处理器应用。每种应用在本书中都能得到充分的阐述。第13章就给出了对铝冶炼过程进行控制的微处理器应用。第14章则给出了另一个有趣的应用,即模式扫描器设计。基于微处理器的电子称量台的设计,则在第15章中进行了详细讲述。
(3) 编写汇编程序是学生们遇到的主要难题之一。本书给出了大量的汇编语言程序,让学生能够编写16位平台或32位平台上的有效程序。第2章给出了8086系列处理器的指令集和汇编器指令,以及一些示例。第3章详细讲述了8086汇编语言编程技巧,并给出了大量示例。第4章则详细讨论了涉及到堆栈、子例程、中断、宏和时间延迟等概念的高级汇编语言程序设计技术。
(4) 一些通用的外设,如,I/O端口、键盘、显示器、ADC、DAC、步进式引擎等,在第5章中进行了详细的阐述。
(5) 一些特殊的外设,例如,中断控制器、DMA控制器、CRT控制器、软盘控制器等,则在第6章和第7章中进行了详细讨论,并给出了和微处理器进行连接的示例及程序。这些外设的详细信息对于将它们和高级CPU进行连接以及设计独立的基于微处理器的系统来说,显得非常重要。
(6) 通常,学生希望找到一本单独讲述系统程序概念的教科书。在本书中,有一个完整的篇章(第12章),用于讲述汇编器、加载程序、链接器、编译器及操作系统的概念。对于系统程序概念进行了解,对完整了解微处理器系统将起到非常重要的作用。
(7) 在当今世界,基于多处理器的系统设计其重要性不可小觑。本书也用一个完整的篇章(第8章),对有关多处理器系统设计的问题进行了讲述。诸如8087、8089之类的协处理器及其接口技术也在本书中进行了介绍。同时,在第8章中用很大的篇幅介绍了基于8088的多处理器系统设计及其示例。
(8) 在当今工业中,微控制器应用非常广泛。本书中关于微控制器的章节为学生提供了了解微控制器的途径。英特尔公司的8位微控制器8051和16位微控制器80196,以及基于8031的应用设计示例,在本书的第16章中进行了详尽的介绍。
总地来说,本书致力于为读者全面了解高级微处理器提供最充分的支持。
Ajoy Kumar Ray
Kishor M Bhurchandi
微处理器与外设大学教程(第2版)
第1版序
XII
XIII
目 录
第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 PIO 8255(可编程输入/
输出端口) 175
5.5 8255的工作模式 177
5.5.1 BSR模式 177
5.5.2 I/O模式 178
5.6 与模数转换器的接口 199
5.6.1 ADC 0808/0809 200
5.6.2 ADC 7109——双斜率
积分型12位模数转换器 203
5.6.3 与8086的接口 208
5.7 与数模转换器的接口 210
5.7.1 AD 7523——8位乘法型
数模转换器 210
5.7.2 8位数模转换器DAC 0800 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 可编程通信接口8251 USART 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 8275 CRT控制器的命令集 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章 Pentium 4——21世纪
产生的微处理器 525
12.1 Pentium 4微处理器的起源 525
12.2 Pentium 4微处理器的
显著特征 526
12.3 Pentium 4微处理器的
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 Pentium 4中的前端分支
预测器 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 Pentium 4微处理器
的通用指令 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功能调用:INT 21H 657
附录C 8051指令集一览 673
微处理器与外设大学教程(第2版)
目 录
XX
XXI